Aspnetcore: рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ [FromRoute], [FromHeader], [FromBody], рдЖрджрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдЬрдире░ 2018  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dotnet/aspnetcore

рдореИрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдмрд╛рдзреНрдп рд╕реЗ рд╕рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ

[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();
}

рдЬрд╛рд╣рд┐рд░ рд╣реИ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ред
рд╡рд┐рдЪрд╛рд░ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд╕рднреА рддрд░реНрдХ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИ рдЬреЛ рдПрдкреАрдЖрдИ/рдПрдорд╡реАрд╕реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рддреЛ рд╕рднреА рдирд┐рдпрдВрддреНрд░рдХ рдХрд░рддрд╛ рд╣реИ

  • рдореЙрдбрд▓ рдХреЛ рдорд╛рдиреНрдп рдХрд░реЗрдВ
  • рдЕрдиреБрд░реЛрдз рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓реЗрдВ
  • рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдбреЗрдЯрд╛ рднреЗрдЬреЗрдВ
  • рдПрдХ рдЙрдкрдпреБрдХреНрдд http рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓реМрдЯрд╛рдПрдВ

рдЕрдм рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рд╕реАрдЖрд░рдпреВрдбреА рдирд┐рдпрдВрддреНрд░рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ - рдФрд░ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реБрдИ!

рдЗрд╕реЗ [FromBody] рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╣ рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬреИрд╕реЗ [FromBodyPart] , [BindFromBody] рдпрд╛ рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧред

рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдкрдХреЗ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдпреЛрдЬрдирд╛ рдЕрд╡рдзрд┐ рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдкрдХреЗ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдпреЛрдЬрдирд╛ рдЕрд╡рдзрд┐ рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ SO рдкреНрд░рд╢реНрди рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЕрднреА рднреА рдпрд╣рд╛рдБ рдЕрдиреБрддреНрддрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:
https://stackoverflow.com/questions/44261111/how-to-model-bind-path-segment-to-object-property

рд╣рдореЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдордиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдврд╛рдВрдЪреЗ рдореЗрдВ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕