Я пытаюсь инициализировать новый клиент GraphQL в Visual Studio 2022 с помощью команды StrawberryShake.Tools:
dotnet graphql init {Endpoint}
Однако это всегда заканчивается ошибкой
Ошибка HTTP_ERROR: Код состояния ответа не указывает на успешное выполнение: 405 (Метод не разрешен)
После небольшого исследования и получения небольшой помощи от разработчика сервера GraphQL, я пришел к выводу, что сервер просто не разрешает эту операцию, и поэтому я не могу использовать инструмент для инициализации клиента.
Если у кого-то есть информация о том, как заставить этот инструмент работать, буду рад узнать. Я полагаю, что конечная точка GraphQL требует токен доступа. Я также пробовал использовать опцию –scheme Bearer {Token}, но это возвращает тот же результат.
Поскольку, кажется, я не могу действительно использовать инструмент для инициализации клиента, я решил попробовать вручную настроить схему и файл graphqlrc.json
, чтобы увидеть, будет ли это работать.
Я смог получить текст схемы с сервера, используя ручной запрос, предоставленный разработчиками, которые создали приложение. Я добавил файл schema.graphql
и файл graphqlrc.json
из шаблона, который нашел в интернете.
После установки пакетов nuget и создания файла query.graphql
, я попробовал различные способы, чтобы получить автогенерацию кода C# при сборке.
Вот что я пробовал:
- Убедитесь, что файл .graphql находится в корне проекта.
- Измените действие сборки в свойствах файла на GraphQL Compile.
Несмотря на все попытки, он не генерирует никакой код. Я задаюсь вопросом, не пропустил ли я что-то в процессе, или есть какие-то другие изменения, которые происходят, когда запускается команда dotnet graphql init
, которые я упустил в своей ручной настройке.
У кого-нибудь есть идеи, что еще я могу попробовать?
Я ранее описывал, что я пробовал.
Конечная точка – wi-fiber.sonar.software/graphiql Это экземпляр облачного приложения sonar.software, которое является облачной системой управления CRM, IPAM и инвентарем, ориентированной на WISP и FISP. Вот ссылка на их документацию о том, как использовать их API. docs.sonar.expert/system/consuming-the-sonar-api Документация подтверждает, что он обслуживается по HTTPS и использует только метод POST.
Ответ
Конечно! Вот полное решение проблемы и рекомендации на русском языке для инициализации GraphQL-клиента с использованием StrawberryShake в Visual Studio 2022:
Проблема
Вы столкнулись с ошибкой при попытке инициализировать GraphQL-клиент с помощью команды StrawberryShake.Tools:
dotnet graphql init {Endpoint}
Полученная ошибка:
Error HTTP_ERROR: Response status code does not indicate success: 405 (Method Not Allowed)
Это указывает на то, что сервер не поддерживает метод, используемый для инициализации, скорее всего, это связано с тем, что сервер принимает только POST-запросы.
Решение
-
Проверка конечной точки: Убедитесь, что вы используете правильный GraphQL-эндпоинт (например,
/graphql
). Если у вас есть документация от разработчиков, проверьте, какой URL-адрес нужно использовать. -
Использование токена: Если сервер требует аутентификацию по токену, убедитесь, что вы добавили корректный токен. Используйте следующую команду с параметром
--scheme
, например:dotnet graphql init {Endpoint} --scheme Bearer {Token}
Если это не помогает, возможно, стоит обратиться к разработчикам сервера, чтобы уточнить детали аутентификации.
-
Ручная настройка: Если инициализация с помощью команды не удалась, можно настроить все вручную.
-
Скачивание схемы: Скачайте схему сервера графиком, как вы уже сделали, используя предоставленный запрос.
- Создание файлов:
- Убедитесь, что файл
schema.graphql
добавлен в корень проекта. - Создайте файл
graphqlrc.json
с необходимыми параметрами (на основе документации или примера из интернета).
- Убедитесь, что файл
Пример содержимого
graphqlrc.json
:{ "schema": "schema.graphql", "documents": "query.graphql" }
-
-
Установка NuGet пакетов: Установите необходимые NuGet пакеты для работы с StrawberryShake и GraphQL:
dotnet add package StrawberryShake dotnet add package StrawberryShake.Tools
-
Настройка сборки:
- Убедитесь, что
Build Action
для вашего файлаquery.graphql
установлено наGraphQL Compile
. - Пересоберите проект, чтобы инициировать генерацию кода.
- Убедитесь, что
-
Проверка проекта: Если автоматическая генерация кода не происходит, убедитесь, что в вашем проекте нет ошибок сборки и все файлы находятся на своих местах.
- Запуск и тестирование: После успешной генерации кода вы сможете использовать сгенерированные классы в вашем клиенте GraphQL.
Заключение
Следуя этим шагам, вы должны смочь решить проблемы с инициализацией клиента GraphQL с использованием StrawberryShake и нормально организовать работу с GraphQL-сервером. Если проблемы все еще возникают, возможно, стоит обратиться к документации или поддержке по GraphQL-серверу.
Если у вас есть дополнительные вопросы или вам нужно больше информации, не стесняйтесь спрашивать! Удачи!