Версионирование REST API в ASP.NET Core

DotNetT2 Light_1200x303

Начиная с ASP.NET Core 3.1, у вас есть возможность изменять версии своих API с помощью пакета Microsoft NuGet. Сегодня мы научимся использовать этот пакет для простого создания версий ваших API.

Размещая API, вы приглашаете разработчиков использовать его на основании согласованного контракта. Что будет, если контракт изменится? Давайте посмотрим на простой пример.

Если я вызову API с URL-адресом https://mybandapi.com/api/bands/4, я получу следующий ответ:

{
   "id": 4,
   "name": "The Eagles, man"
}

Теперь предположим, что я решил обновить свою схему API новым полем YearFounded. Вот как теперь выглядит новый ответ:

{
   "id": 4,
   "name": "The Eagles, man",
   "YearFounded": 1971
}

С этим новым полем существующие клиенты по-прежнему будут работать. Это не серьезное изменение, поскольку существующие приложения могут его игнорировать. Вы, конечно же, должны задокументировать новое поле в «Долгой перспективе», но в конечном итоге это не так уж важно.

Допустим, вы хотите, чтобы name стало набором names, связанных с группой, например:

{
   "id": 4,
   "names": 
   [
     "The Eagles, man",
     "The Eagles"
   ],
   "FoundedYear": 1971
}

Вы внесли критическое изменение. Пользователи вашего API ожидали, что поле name будет строковым значением, а теперь вы возвращаете набор строк. В результате, когда потребители вызывают API, их приложения не будут работать, как предполагалось, и ваши пользователи , будут не довольны.

Ваши пользователи должны знать, чего ожидать, будь то небольшое изменение, которое не нарушает правила, или изменение, которое что-то ломает. Чтобы помочь управлять развивающимися API, вам понадобится стратегия управления версиями API.

Начиная с ASP.NET Core 3.1, Microsoft предоставляет библиотеки для помощи в управлении версиями API. Они предоставляют простой и эффективный способ добавления семантики управления версиями к вашим службам REST, а также соответствуют рекомендациям Microsoft REST Guidelines.

В этом посте я покажу вам, как можно использовать пакет NuGet Microsoft.AspNetCore.Mvc.Versioning для применения управления версиями API к веб-API REST ASP.NET Core. (далее…)

Реализация аутентификации JWT в ASP.NET Core 5

JWT аутентификация

В связи с ростом количества API-интерфейсов и их глобального потребления в наши дни, безопасность API чрезвычайно важна. Аутентификация JWT — это стандартный способ защиты API-интерфейсов. Он позволяет проверять данные, передаваемые по сети между API-интерфейсами и клиентами, которые используют API-интерфейсы.

Веб-токены JSON (широко известные как JWT) — это открытый стандарт для передачи данных между клиентом и сервером, позволяющий безопасно передавать данные между сервером и потребителями. В этой статье рассказывается о том, как можно использовать JWT для защиты API.

(далее…)

Создание настраиваемого атрибута авторизации в ASP.NET Core

How ToT2 Dark_1200x303

Авторизация в ASP.NET Core контролируется с помощью AuthorizeAttribute и различных параметров. В самой простой форме, применении [Authorize] атрибута к контроллеру, действию или Razor странице, ограничивает доступ к этому компоненту пользователям, прошедшим проверку подлинности. Сегодня я опишу, каким образом добавить свои атрибуты.

(далее…)

Генерируем фронтенд WebAPI с помощью Swagger

Существует множество веб-API, которые доступны в реальном мире, некоторые из них открыты для использования некоторым требуется лицензия. Все веб-API имеют разные спецификации для реализации на стороне клиента. Часть реализации на стороне клиента достаточно сложны и требуют сложной реализации. Чтобы ускорить задачу разработки использования веб-API в клиентском приложении, у нас есть интересный инструмент для генерации клиентского кода с помощью NSwagStudio или Open API — Swagger.

Если вы новичок в интеграции Swagger с ASP.NET Core, я бы посоветовал вам прочитать статью — Интеграция Swagger с веб-API .Net Core с использованием Entity Framework, там я продемонстрировал интеграцию библиотеки Swagger в ASP.NET. Веб-API с использованием Entity Framework (размещу чуть позднее).

(далее…)

Как использовать F# из C#

F # — это функциональный язык программирования, который компилируется в .NET Intermediate Language (IL). C# становится более функциональным языком программирования. В последней версии C # (9) есть новые функции, которые делают функциональное программирование более доступным. Хорошая новость в том, что поскольку оба языка компилируются в IL, мы можем использовать их как взаимозаменяемые. Мы можем ссылаться на проекты F # в проектах C # и наоборот. Кроме того, с помощью dnSpy мы можем преобразовать IL в C #. В этой статье объясняется, как скомпилировать сборку F # (IL), а затем ссылаться на нее из C # или преобразовать ее в C #. Это дает программистам на C # богатый набор функций F # без необходимости переносить весь код.

(далее…)