Атрибуты From… в .NET Web API. Начало
Несмотря на то, что ASP.NET «из коробки» неплохо справляется с привязкой параметров методов действий контроллеров или свойств модели, мы можем детально контролировать, откуда мы хотим получить тот или иной параметр или свойство с помощью атрибутов [From<…>].
1. FromQuery
Атрибут FromQuery используется для получения параметра из строки запроса. Мы можем добавить атрибут FromQuery к параметру метода действия, и по умолчанию он будет сопоставлять имя параметра метода с соответствующим именем параметра строки запроса.
В примере ниже, если мы выполним запрос GET к
/api/from-api/from-query?page=4, параметр page получит значение 4, и это значение будет возвращено как часть ответа:[ApiController]Можно добавить необязательный параметр атрибута Name, если имя параметра метода действия отличается от имени в строке запроса:
[Route("api/from-api")]
public class FromApiController : Controller
{
[HttpGet("from-query")]
public IActionResult FromQuery([FromQuery] int page)
{
return Ok(new { page });
}
}
public IActionResult FromQuery(Тогда
[FromQuery(Name = "p")] int page)
/api/from-api/from-query?p=8 задаст параметру page значение 8.2. FromHeader
Атрибут FromHeader сопоставляет параметр с соответствующим заголовком запроса на основе имени. Примером этого является использование аутентификации. Если мы используем аутентификацию JWT в веб-API, нам нужно добавить в запрос заголовок авторизации. Если мы хотим получить значение заголовка авторизации, мы можем добавить параметр метода authorization с атрибутом FromHeader.
public IActionResult FromHeader(Аналогично FromQuery, мы можем использовать необязательный параметр атрибута Name, если хотим, чтобы имя параметра метода отличалось от имени заголовка.
[FromHeader] string authorization)
{
…
}
3. FromForm
Атрибут FromForm работает с запросами POST, если используется тип контента multipart/form-data или x-www-url-encoded. Точно так же, он сопоставит имя поля формы с именем параметра метода. Используя параметр атрибута Name, можно задать требуемое имя поля формы для сопоставления.
public IActionResult FromForm([FromForm] string name)4. FromRoute
{
…
}
FromRoute используется, если атрибут маршрута используется как часть действия. Добавив FromRoute к параметру действия, можно получить значение на основе имени атрибута маршрута. В следующем примере имеется атрибут маршрута с именем {category}. По умолчанию FromRoute сопоставит его атрибут с параметром метода действия category, что также можно переопределить с помощью параметра атрибута Name:
[HttpGet("from-route/{category}")]
public IActionResult FromRoute(
[FromRoute(Name="category")] string name)
{
…
}
Окончание следует…Источник: https://www.roundthecode.com/dotnet-tutorials/fromquery-fromform-what-do-the-net-web-api-attributes-do