Именно с создания экземпляра этого класса начинается выполнение приложения. В этой части мы рассмотрим некоторые из свойств класса WebApplicationBuilder.
Основы ASP.NET Core Web API
Класс WebApplication. Запуск и остановка приложения, доступ к событиям жизненного цикла приложения
Класс WebApplication
реализует сразу три интерфейса IHost
, IApplicationBuilder
и IEndpointRouteBuilder
и используется для широкого круга задач — от запуска и остановки приложения, до настройки маршрутов, с которыми сопоставляются запросы пользователей, конвейера обработки запросов и получения доступа к настройкам приложения.
Файл Program.cs проекта ASP.NET Core Web API
Файл Program.cs – это главный файл нашего приложения с которого начинается абсолютно всё, что касается работы. В зависимости от того, какая версия платформы .NET выбрана при создании нового проекта, зависит содержимое этого файла.
ASP.NET Core Web API. Работа с окружением (интерфейс IWebHostEnvironment)
Приложение ASP.NET Core Web API может взаимодействовать со своим окружением, используя свойство Environment
класса WebApplication
, которое предоставляет сведения об окружении в виде IWebHostEnvironment
.
ASP.NET Core Web API. Работа с ответом в middleware
До сих пор мы разрабатывали компоненты middleware, которые, если можно так выразиться, работали только слева направо — то есть, запрос либо проходил всю цепочку middleware в конвейере, либо прерывался в каком-либо middleware и пользователю возвращался код ошибки. Вместе с тем, если вспомнить схему из самой первой темы про middleware, то на ней показано прохождение запроса как слева направо, так и наоборот — справа на лево. При этом, при движении в обратном направлении мы можем изменять ответ сервера. В этой части рассмотрим вопросы связанные с модификацией ответа сервера.
ASP.NET Core Web API. Способы создания компонентов middleware
В зависимости от наших потребностей, в ASP.NET Core мы можем создавать компоненты middleware различными способами. В этой части мы рассмотрим возможные способы создания компонентов middleware при разработке приложений Web API на одном примере, чтобы наглядно продемонстрировать преимущества и недостатки того или иного способа.
ASP.NET Core Web API. Работа с запросом пользователя (объект HttpRequest)
При разработке приложений ASP.NET Core Web API на основе контроллеров платформа позволяет нам максимально лаконично и удобно работать с запросами пользователя и ответами сервера. По сути, в большинстве случаев, для формирования ответа пользователю, нам требуется создать какой-либо объект, содержащий данные для ответа и передать его в результате выполнения метода контроллера. Далее, ASP.NET Core задействует встроенные механизмы сериализации объекта в JSON, добавит необходимые заголовки ответа и т.д. Чаще нам потребуется работа с параметрами запроса пользователя, которые в объекте HttpContext
содержатся в свойстве Request
. Рассмотрим это свойство подробнее, прежде, чем рассмотрим ещё один пример использования middleware в своих приложениях.
ASP.NET Core Web API. RequestDelegate и контекст запроса
Для создания компонентов middleware используется делегат RequestDelegate
, который выполняет некоторое действие и принимает контекст запроса. который представлен объектом HttpContext
. Рассмотрим использование этого объекта в приложениях ASP.NET Core Web API.
ASP.NET Core Web API. Конвейер обработки запросов и middleware
Обработка запросов в ASP.NET Core построена по принципу конвейера, состоящего из делегатов запроса. Делегат запроса представляет собой некий фрагмент кода, который может выглядеть как обычный анонимный метод или класс C#. Делегаты запроса называются ПО промежуточного слоя. Также можно встретить такие названия как компонент middleware или просто — middleware. Компонент middleware может выполнять работу как до, так и после вызова следующего компонента в конвейере запроса или же не вызывать следующий компонент конвейера — в этом случае компонент middleware будет называться терминальным. В этой части мы рассмотрим основные моменты, касающиеся организации конвейера обработки запросов в приложениях ASP.NET Core Web API.