Основные пространства имен и конфигурация ASP.NET Web API

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 29.10.2015

В процессе работы с Web API мы столкнемся с похожей структурой обработки запросов: контроллеры, контекст запроса, валидация модели, фильтры и т.д. Для всех этих процессов Web API предоставляет нам похожие классы, как в MVC. В то же время это будут совершенно другие классы, даже если они называются одинаково и выполняют ту же роль в системе.

Например, можно следующим образом сопоставить некоторые типы MVC и Web API:

Web API

MVC

System.Web.Http.Controllers.IHttpController

System.Web.Mvc.IController

System.Web.Http.ApiController

System.Web.Mvc.Controller

System.Web.Http.Controllers.HttpRequestContext

System.Web.HttpContext

System.Net.Http.HttpRequestMessage

System.Web.HttpRequest

System.Net.Http.HttpResponseMessage

System.Web.HttpResponse

В то же время эти типы не являются полными аналогами. И для большего удобства мы также в Web API 2 можем использовать классы из пространства имен System.Web.

Базовая функциональность Web API сосредоточена в следующих пространствах имен:

  • System.Net.Http : содержит типы, представляющие запросы и ответы HTTP

  • System.Web.Http : определяет большинство типов, используемых в Web API, в частности, класс контроллера ApiController

  • System.Net.Http.Formatting : определяет классы, управляющие сериализацией данных при отправке ответа пользователю

  • System.Web.Http.Controllers : содержит ряд типов, используемых классом ApiController

  • System.Web.Http.Dependencies : содержит классы, управляющие внедрением зависимостей

  • System.Web.Http.Dispatcher : включает типы, управляющие получением данных запроса от хостинговой платформы и передачей из обрабатывающему запрос контроллеру

  • System.Web.Http.Filters : содержит классы фильтров

  • System.Web.Http.Metadata : содержит классы, используемые при описании классов моделей с помощью метаданных

  • System.Web.Http.ModelBinding : классы из этого пространства имен ответственны за связывание данных из запроса с параметрами методов

  • System.Web.Http.Results : содержит классы, которые описывают результат методов, отправляемый клиенту

  • System.Web.Http.Routing : определяет классы, управляющие маршрутизацией в Web API

  • System.Web.Http.Validation : содержит классы, управляющие валидацией данных запроса клиента

  • System.Web.Http.ValueProviders : содержит ряд вспомогательных классов, например, поставщики значений, используемых для извлечения данных из запроса

Конфигурация Web API

Конфигурация приложения WebApi определяется в файле WebApiConfig.cs, который находится в проекте в папке App_Start. По умолчанию он содержит только описание маршрутов Web API, однако может содержать и другие настройки конфигурации:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

В методе Register устанавливаются конфигурационные настройки Web API.

Вне зависимости от того, где развертывается приложение - на IIS, локально или в Windows Azure, точкой входа в приложение и его конфигурацию является класс приложения, определенный в файле Global.asax.cs:

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
        //......................................
    }
}

Класс System.Web.Http.GlobalConfiguration предоставляет точку входа для конфигурации приложения Web API и определяет следующие статические методы:

  • Configuration: хранит объект HttpConfiguration, который представляет конфигурацию Web API

  • DefaultHandler: предоставляет объект HttpMessageHandler, который используется по умолчанию для обработки запросов

  • Configure(callback): регистрирует метод callback, который вызывается для конфигурации приложения. По умолчанию (GlobalConfiguration.Configure(WebApiConfig.Register)) вызывается метод Register класса WebApiConfig

HttpConfiguration класс позволяет настроить конфигурацию с помощью следующих свойств:

  • DependencyResolver: используется для внедрения зависимостей

  • Filters: получает или устанавливает фильтры запроса

  • Formatters: хранит форматировщики медиа-типов, которые управляют сериализацией ответа клиенту

  • IncludeErrorDetailPolicy: указывает, надо ли включать в сообщения об ошибках детализованую информацию

  • MessageHandlers: хранит обработчики сообщений

  • ParameterBindingRules: возвращает набор правил, устанавливающих привязку между данными запроса и параметрами

  • Routes: возвращает набор маршрутов приложения

  • Services: возвращает все используемые Web Api сервисы

Все эти свойства образуют инфраструктуру Web API, используемую для обработки входящих запросов.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850