рдореИрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдмрд╛рдзреНрдп рд╕реЗ рд╕рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ
[HttpPost({id})]
public virtual async Task<IActionResult> Post(PostRequest model)
рдФрд░ рдореЙрдбрд▓ рдЗрд╕ рддрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
public class PostRequest
{
[FromRoute]
public int Id { get; set; }
[FromHeader]
public string SomeHeader { get; set; }
[FromBody]
public int Foo { get; set; }
[FromBody]
public string Bar { get; set; }
[FromBody]
public string Baz { get; set; }
}
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдПрдХрд╛рдзрд┐рдХ [FromBody]
рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд░ рдЗрд╕реЗ рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рдФрд░ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рддреЛ рдореИрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реАрдЖрд░рдпреВрдбреА рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдЬреИрд╕реЗ
[HttpPost({id})]
public virtual async Task<IActionResult> Post(PostRequest model)
{
var command = _mapper.Map<TCommand>(model); // AutoMapper
await _mediator.Send(command); // MediatR
// omitted for brevity
return Created();
}
рдЬрд╛рд╣рд┐рд░ рд╣реИ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ред
рд╡рд┐рдЪрд╛рд░ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд╕рднреА рддрд░реНрдХ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИ рдЬреЛ рдПрдкреАрдЖрдИ/рдПрдорд╡реАрд╕реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рддреЛ рд╕рднреА рдирд┐рдпрдВрддреНрд░рдХ рдХрд░рддрд╛ рд╣реИ
рдЕрдм рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рд╕реАрдЖрд░рдпреВрдбреА рдирд┐рдпрдВрддреНрд░рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ - рдФрд░ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реБрдИ!
рдЗрд╕реЗ [FromBody]
рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╣ рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬреИрд╕реЗ [FromBodyPart]
, [BindFromBody]
рдпрд╛ рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧред
рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?
рдЖрдкрдХреЗ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдпреЛрдЬрдирд╛ рдЕрд╡рдзрд┐ рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ SO рдкреНрд░рд╢реНрди рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЕрднреА рднреА рдпрд╣рд╛рдБ рдЕрдиреБрддреНрддрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:
https://stackoverflow.com/questions/44261111/how-to-model-bind-path-segment-to-object-property
рд╣рдореЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдордиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдврд╛рдВрдЪреЗ рдореЗрдВ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдкрдХреЗ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдпреЛрдЬрдирд╛ рдЕрд╡рдзрд┐ рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред