Как добавить GraphQL Wrapper поверх REST API

Как добавить GraphQL Wrapper поверх REST API

17 ноября 2022 г.

Цели обучения

  • Как добавить оболочку GraphQL
  • Как использовать инструмент NSwag для создания кода

Предпосылки

  • Требовать «HotChocolate.AspNetCore» из пакета NuGet.
  • Требуется .Net 5 Framework.
  • Интегрированная среда разработки Visual Studio.
  • Понимание проекта .Net Web API.
  • Базовые знания пользовательского интерфейса Swagger.

Начало работы

GraphQL позволяет вам запрашивать то, что вы хотите, в одном запросе, экономить трафик и сокращать количество запросов.

Шаг 1. Создайте новый проект

Создайте новый проект в шаблоне ASP.Net Core Web API для демонстрации этой статьи, как показано ниже.

Проблема создания полезной документации и справочных страниц для веб-API. Теперь проект .Net по умолчанию включен с swagger, как показано в URL-адресе локального хоста

Шаг 2. Добавьте пакеты GraphQL

Установите пакет «HotChocolate.AspNetCore» из галереи NuGet во вновь созданное решение в Visual Studio.

Шаг 3. Создайте файл манифеста

Откройте проводник > папку проекта и выполните следующую команду с помощью инструмента Dotnet Global.

dotnet new tool-manifest

и установите инструмент NSwag

dotnet tool install NSwag.ConsoleCore

Шаг 4. Создайте swagger.json

Создайте JSON-файл swagger в каталоге проекта с помощью приведенной ниже команды

curl <SwaggerJsonFilePath> > swagger.json

Нажмите, как показано ниже, чтобы узнать путь к файлу swagger JSON

Пример

curl https://localhost:44323/swagger/v1/swagger.json > swagger.json

Шаг 5. Создание служебных файлов

Создайте файл службы REST с помощью приведенной ниже команды с соответствующим пространством имен и именем класса.

dotnet nswag swagger2csclient 
/input:swagger.json 
/classname:<Clasname> 
/namespace:<Namespace>
/output:<OutputFile>

Пример

dotnet nswag swagger2csclient 
/input:swagger.json 
/classname:RestClass
/namespace:RestNamespace 
/output:ToDoService.cs

Шаг 6. Обновите базовый URL

Обновите базовый URL-адрес в сгенерированном файле «ToDoService».

Шаг 7. Настройте игровую площадку GraphQL

Подключить игровую площадку внутри метода ConfigureServices в файле Startup.cs

public void ConfigureServices(IServiceCollection services){

services.AddHttpClient<RestClass>();
  services
   .AddRouting()
   .AddGraphQLServer()
   .AddQueryType<Query>();
}

Создайте класс запроса GraphQL следующим образом

public class Query
{
    public async Task<ICollection<TodoReader.WeatherForecast>> GetTodosAsync(
        [Service] TodoService service,
        CancellationToken cancellationToken)
    {
        return await service.WeatherForecastAsync(cancellationToken);
    }

}

Сопоставьте GraphQL в методе Configure

app.UseEndpoints(endpoints =>
{
  endpoints.MapControllers();
  endpoints.MapGraphQL();
});

Шаг 8. Запустите игровую площадку

Просмотрите URL-адрес локального хоста по маршруту «/graphql», и отобразится следующая игровая площадка GraphQL.

Вот и все, игровая площадка GraphQL успешно интегрирована в .Net REST API вместе с swagger.

Пример GitHub

ssukhpinder/DotNetCoreRestApi * Добавьте graphql и swagger в REST API. Внесите свой вклад в разработку ssukhpinder/DotNetCoreRestApi, создав учетную запись на…*github.com

Демонстрация

Спасибо за прочтение, и я надеюсь, что вам понравилась статья. Оставьте свой отзыв в разделе комментариев.

Подпишитесь на меня в публикации C#, LinkedIn, Instagram, Twitter, Dev.to, Pinterest, Substack, Викс

:::информация Также опубликовано здесь.

:::


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE