И разверните его в Azure

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

Существует много API-заполнителей, но у них часто есть две проблемы:

  • Данные не соответствуют вашей модели данных.
  • Операции CRUD ненастоящие (данные на самом деле не обработаны).

Я покажу вам, как создать собственный API-заполнитель примерно за то же время, что и Google, чтобы найти что-то подходящее. API будет использовать вашу собственную модель данных и позволит вам выполнять настоящие CRUD-операции, при которых изменения сохраняются — по крайней мере, до тех пор, пока вы не перезапустите API. Кроме того, она расширяема, поэтому модель данных может расти по мере роста вашего приложения.

Для этого вам понадобится установленная Visual Studio 2022. Он будет использовать минимальный API ASP.NET Core. Это займет не более 10 минут (по крайней мере, после того, как вы закончите читать эту статью). Готовый код можно найти на GitHub.

Готовый? Вот так!

Откройте Visual Studio 2022 и создайте новый проект. Выберите ASP.NET Core Web API. Мы можем назвать наш новый API как угодно, но это глупое имя, поэтому давайте назовем его PostAPI.

Убедитесь, что вы сняли флажок Использовать контроллеры (снимите флажок, чтобы использовать минимальный API).

После создания проекта откройте файл Program.cs и удалите пример API WeatherForecast, но сохраните общие настройки (включая Swagger).

Нам также необходимо включить CORS, так как мы, вероятно, собираемся получить к нему доступ из клиента браузера. Наш программный файл должен выглядеть так:

Теперь мы добавляем в проект файл json для хранения наших исходных данных-заполнителей; назовем его posts.json. Убедитесь, что он будет скопирован в выходную папку. Затем добавьте в него следующие данные:

Бессовестная самореклама, я знаю.

Скопируйте содержимое JSON, затем поместите курсор в конец файла Program. Мы позволим Visual Studio сгенерировать наш класс данных: Перейдите в меню «Правка» > «Специальная вставка» > «Вставить JSON как классы». Это создаст для нас несколько классов.

Нам не нужен RootObject, поэтому удалите его. Затем переименуйте Class1 в Post.

Мы загружаем данные из posts.json в локальную переменную, которую затем можем использовать в наших конечных точках (через мгновение). Итак, добавьте следующие строки:

Наконец, мы реализуем конечные точки. В этом примере мы добавляем пять стандартных конечных точек CRUD:

  • Получить все сообщения (GET /posts)
  • Получить по ID (GET /posts/{id})
  • Создать новый пост (POST /posts)
  • Обновить сообщение (PUT /posts/{id})
  • Удалить сообщение (DELETE /posts/{id})

Мы хотим, чтобы Получить по идентификатору и Обновитьвозвратили NotFound, если указан неизвестный идентификатор, а в противном случае все должно быть ОК. Другие API могут иметь другие потребности. В любом случае добавьте следующий код между инициализацией posts и app.Run():

Готово! Теперь вы можете запустить приложение, и ваш API откроется со страницей Swagger. Попробуйте разные конечные точки.

Бонус: развертывание в Azure

Вы можете создать бесплатный веб-сайт или службу приложений в Azure. Затем вы можете щелкнуть правой кнопкой мыши свой проект API в Visual Studio и выбрать Опубликовать…. И теперь остальная часть команды может получить доступ к вашему удивительному API-заполнителю.

Имейте в виду, что бесплатная служба приложений Azure отключается через 20 минут бездействия. Это сбрасывает данные, которые после первоначальной загрузки хранятся только в памяти. Если вы не хотите ждать 20 минут или у вас большая команда, которая постоянно обращается к API, тем самым поддерживая его работоспособность, вы можете реализовать конечную точку /reset для перезагрузки данных. Я оставлю это в качестве упражнения.

Кроме того, вы можете добавить его в (небесплатный) план службы приложений стандартного уровня, включить Keepalive, после чего вы сможете работать с одними и теми же данными в течение более длительного периода времени.

Суммируя

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

В следующей статье я покажу, как использовать ASP.NET Core Minimal API в качестве удобного и гибкого интерфейса для приложений любого размера.