Проблемы с инициализацией C# GraphQL StrawberryShake

Вопросы и ответы

Я пытаюсь инициализировать новый клиент 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-запросы.

Решение

  1. Проверка конечной точки: Убедитесь, что вы используете правильный GraphQL-эндпоинт (например, /graphql). Если у вас есть документация от разработчиков, проверьте, какой URL-адрес нужно использовать.

  2. Использование токена: Если сервер требует аутентификацию по токену, убедитесь, что вы добавили корректный токен. Используйте следующую команду с параметром --scheme, например:

    dotnet graphql init {Endpoint} --scheme Bearer {Token}

    Если это не помогает, возможно, стоит обратиться к разработчикам сервера, чтобы уточнить детали аутентификации.

  3. Ручная настройка: Если инициализация с помощью команды не удалась, можно настроить все вручную.

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

    • Создание файлов:
      • Убедитесь, что файл schema.graphql добавлен в корень проекта.
      • Создайте файл graphqlrc.json с необходимыми параметрами (на основе документации или примера из интернета).

    Пример содержимого graphqlrc.json:

    {
      "schema": "schema.graphql",
      "documents": "query.graphql"
    }
  4. Установка NuGet пакетов: Установите необходимые NuGet пакеты для работы с StrawberryShake и GraphQL:

    dotnet add package StrawberryShake
    dotnet add package StrawberryShake.Tools
  5. Настройка сборки:

    • Убедитесь, что Build Action для вашего файла query.graphql установлено на GraphQL Compile.
    • Пересоберите проект, чтобы инициировать генерацию кода.
  6. Проверка проекта: Если автоматическая генерация кода не происходит, убедитесь, что в вашем проекте нет ошибок сборки и все файлы находятся на своих местах.

  7. Запуск и тестирование: После успешной генерации кода вы сможете использовать сгенерированные классы в вашем клиенте GraphQL.

Заключение

Следуя этим шагам, вы должны смочь решить проблемы с инициализацией клиента GraphQL с использованием StrawberryShake и нормально организовать работу с GraphQL-сервером. Если проблемы все еще возникают, возможно, стоит обратиться к документации или поддержке по GraphQL-серверу.

Если у вас есть дополнительные вопросы или вам нужно больше информации, не стесняйтесь спрашивать! Удачи!

Оцените материал
Добавить комментарий

Капча загружается...