До сих пор мы разрабатывали нашы проекты ASP.NET Core Web API, особенно не вдаваясь в вопросы документирования тех или иных возможностей и функций приложения. Между тем, документирование API – это, едва ли не самая важная часть работы над проектом, если вы планируете его распространять среди широкого круга пользователей. Именно документация API позволяет потенциальным и уже имеющимся пользователям разобраться с тем, как работает ваш API, какие методы предоставляет, как его эффективно использовать и так далее.
ASP.NET Core Web API
Согласование содержимого. Собственные форматировщики
В ASP.NET Core используются два вида форматировщиков – для форматирования входных данных (input formatters) и форматирования выходных данных (output formatters). И, хотя в подавляющем большинстве случаев, для приложения Web API достаточно того же формата JSON для форматирования данных, всё же иногда может потребоваться, чтобы наше приложение могло обрабатывать и такие форматы, которые не предусмотрены по умолчанию в ASP.NET Core.
Согласование содержимого. Введение
На сегодняшний день, практически форматом по умолчанию для отправки ответа клиенту сервером Web API считается JSON. Это действительно довольно популярный, лаконичный и простой формат обмена данными, который используется практически повсеместно.
CORS
Одной из самых неочевидных проблем, с которыми может столкнуться начинающий разработчик ASP.NET Core является CORS.
CORS (Cross-origin resource sharing — «совместное использование ресурсов между разными источниками») — это технология современных браузеров, которая позволяет предоставить веб-страницам доступ к ресурсам другого домена. По умолчанию веб-браузеры в целях безопасности ограничивают ajax-запросы между различными доменами и такое поведение иногда может оказаться неприемлемым для наших приложений ASP.NET Core. В этом случае мы должны использовать возможности платформы ASP.NET Core для настройки CORS в своем приложении.
Сжатие ответов
Сжатие ответов – это ещё один из наиболее часто применяемых способов повышения производительности веб-приложения. Пропускная способность Сети – ресурс ограниченный и, чем меньший объем данных мы передаем от сервера к клиенту и наоборот, тем наше приложение может стать отзывчивее и быстрее реагировать на запросы пользователей.
HTTP-кэширование. Кэширование выходных данных (output caching)
Кэш выходных данных позволяет кэшировать содержимое, возвращаемое действием контроллера
HTTP-кэширование. Кэширование ответов (response caching)
HTTP-кэширование (веб-кэширование), как и кэширование данных, является способом повышения производительности приложений. При этом управление HTTP-кэшированием ресурсов осуществляется с помощью заголовков запросов. Обычно выделяют два вида http-кэша – приватный (private cache) и кэш совместного использования (shared cache). Также, в различных источниках можно встретить такие названия как клиентский кэш, шлюзовый, прокси-кэш и так далее. Но, в любом случае, все эти виды кэшей так или иначе можно свести к первым двум видам: приватный (клиентский) кэш – это кэш, который доступен конкретному пользователю и хранится на его компьютере, а кэш совместного пользования, в свою очередь, может располагаться где-либо в Сети и быть доступным многим пользователям.
Распределенное кэширование (Distributed Cache)
Распределенный кэш (Distributed Cache) — кэш хранящийся в какой-либо внешней службе и, если один сервер сохранил элемент кэша, то другие серверы могут его использовать. Например, в ASP.NET Core для распределенного кэша может использоваться такой сервис, как Redis.
Кэширование в памяти (In-Memory Cache)
Кэширование — это относительно простая и, в то же время, эффективная концепция в программировании, идея которой состоит в том, чтобы повторно использовать данные, не прибегая к выполнению повторных дорогостоящих операций. В ASP.NET Core предусмотрены различные механизмы кэширования данных.
Централизованная обработка ошибок. Интерфейс IExceptionHandler
Начиная с ASP.NET Core 8.0 также для перехвата необработанных исключений и их централизованной обработки можно использовать интерфейс IExceptionHandler, который используется компонентом middleware для обработки исключений