Как добавить 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, Викс
:::информация Также опубликовано здесь.
:::
Оригинал