Как отправить запрос graphql почтальоном?


81

я использую

POST type
URL http://######/graphql
Body: 
query: "query: "{'noteTypes':  {'name', 'label', 'labelColor', 'groupName', 'groupLabel', 'imageUrl'}}"

Но он возвращает «сообщение»: «Необходимо предоставить строку запроса».

Ответы:


136

Есть лучший способ сделать это с помощью REST-клиента Insomnia.

Документы здесь, как отправлять запросы graphql: https://support.insomnia.rest/article/61-graphql


Ниже приведены шаги для почтальона

Шаг 1.

Запустите GraphiQL в Chrome, откройте консоль Chrome Dev, щелкните вкладку Сеть и сделайте запрос из graphiql, когда вы сделаете запрос, на вкладке сети отобразится запрос graphql ...

введите описание изображения здесь

Шаг 2.

Из graphqlзапроса скопируйте запрос запроса, выберитеCopy as cURL (cmd)

введите описание изображения здесь

Шаг 3.

Откройте Почтальон, в верхнем левом углу нажмите Importкнопку, после нажатия Importвам нужно нажать Paste Raw Textи вставить скопированный cURLзапрос, как это было сделано на шаге 2, после того, как это будет сделано, нажмитеImport

введите описание изображения здесь

Шаг 4.

Почтальон готов отправить запрос Graphql, просто нажмите Sendкнопку, вы увидите Responseв поле ответа в теле, как показано ниже

введите описание изображения здесь

Шаг 5.

Чтобы увидеть, как отправляется запрос, щелкните Bodyвкладку рядом с ней Headers, вы узнаете, как предоставить поля от почтальона в формате JSON.

например:, edges {\n node {\n id\n jobId\n }\nЕсли вы хотите просмотреть другое поле, вам нужно добавить его с суффиксом\n

вроде если нужно nameто:edges {\n node {\n id\n jobId\n name\n }\n

\nздесь просто означает новую строку. Вместо этого вы можете упростить задачу, предоставив ясный и наглядный JSON, как показано ниже.

================================================== =========================

Примечание . Тип тела должен быть необработанным сapplication/jsonтипом содержимого. Итак, запрос должен быть действующим JSON с кавычками.".."

{  
   "query":"{viewer {user {edges {node {id jobId name }}}}}"
}

================================================== =========================

введите описание изображения здесь

вы можете сразу начать, step 5если знаете, как отправить запрос в теле, а также другие вещи, которые должны потребоваться при отправке запроса от почтальона

введите описание изображения здесь

С упрощенным JSON

введите описание изображения здесь


1
Удивительный! Удивительный!
ЗППП

действительно почтальон бесполезен для graphql, нам нужен graphiql с экранами почтальона
stackdave

Потрясающе, спасибо за сон
zhulinpinyu

При выполнении тех же действий я получаю :, Ошибка при импорте Curl: обнаружено 2 аргумента без опций. Поддерживается только один (URL)
Анкит Гупта 01

2
Копирование как cURL (bash) сработало для меня, вместо Копировать как cURL (cmd), используя приложение chrome postman на ОС Windows 10
Другой кодер

47

Бессонница не нужна, если сервер GraphQL отвечает на Content-type: application/graphqlилиpostman.setEnvironmentVariable ,

Просто сделай это:

На вкладке Заголовки: Content-Type: application/graphql

На вкладке "Тело" выбрано "сырые" введите свой запрос.

введите описание изображения здесь


я получаю «Нет строки запроса», пытаясь это сделать
Дима

1
У меня отлично работает! Использование Node.js с зависимостями express и express-graphql.
Брайан


19

Есть простой способ сделать это. Используйте сценарий предварительного запроса, чтобы структурировать полезную нагрузку ( источник ).

Шаг 1.

В теле запроса поместите заполнитель для полезной нагрузки.

{
    "query":{{query}}
}

Шаг 2.

Создайте полезную нагрузку в сценарии предварительного запроса и сохраните ее в переменной среды.

postman.setEnvironmentVariable("query", JSON.stringify(
`
{
  search(query: "test", type: ISSUE, first: 10) {
    issueCount
    edges {
      node {
        ... on Issue {
          title
          id
          state
          closed
          repository {
            name
          }
        }
      }
    }
  }
}
`
));

Вот и все.


4
Это работает как шарм и позволяет избежать хлопот, связанных со всеми ручными шагами, описанными в предыдущих ответах! Спасибо.
Alexis.Rolland

Мы должны использовать старую версию graphql или иметь особую настройку, но, наконец, она сработала с предложенным выше предложением и небольшим изменением «body» вместо «query»:> placeholder> {> «body»: {{query}}> }
darul75 07

11

ОБНОВЛЕНИЕ 2:

Это непрактично использовать POSTMAN, потому что они работают, но с легкостью добавляют заголовки, что занимает много времени, и я думаю, что POSTMAN не предназначен для естественной работы с graphql,

вы можете следить за прогрессом здесь: https://github.com/postmanlabs/postman-app-support/issues/1669

Я рекомендую использовать другой плагин пакетов, например:

the best (like postman , but profile and sync price 5$ monthly):
   https://insomnia.rest/
others:
   https://github.com/andev-software/graphql-ide
   https://github.com/imolorhe

для graphiql (без возможности добавления заголовков) вам нужно установить три вещи (их нелегко набрать):

  1. Заголовок:

    Тип содержимого: приложение / json

  2. Тело:

    Выберите Ray <optiongroup

    Выберите JSON (приложение / json) <selectbox

  3. Составьте объект javascript с «запросом» и «значением» вашего графического запроса. Как и всем объектам в js, ему необходимы свойство и значение, в данном случае "quote" - это свойство, значение должно быть заключено в двойные кавычки. Внутри значения (строка graphl) вы не составляете объекты js, поэтому вам не нужно использовать двойные кавычки, это просто строка.

    {"запрос": "{allQuotes {текст}}"}

    проблема в том, что вам нужно ввести все в одну строку, не как grapIql ... в почтальоне github есть требование публикации, поэтому с graphql легко работать:

введите описание изображения здесь

введите описание изображения здесь


11

ОБНОВЛЕНИЕ 8-2019 - Я знаю, что это старое, но что касается POSTMAN, если вы еще не поняли это, у них есть опция graphql (бета) для публикации тела. Нет необходимости добавлять дополнительные заголовки.

введите описание изображения здесь


9

Postman только что выпустил встроенную поддержку GraphQL в версии 7.2.

Эта версия поддерживает

  • Отправка запросов GraphQL в теле запроса как запросов POST
  • Поддержка переменных GraphQL
  • Создание API в Postman с типом схемы GraphQL
  • Автозаполнение запросов интегрировано с пользовательскими схемами GraphQL

Пожалуйста, попробуйте и поделитесь с нами своим мнением в ветке отслеживания на нашем форуме сообщества.


8

Я столкнулся с той же проблемой, когда пытаюсь использовать graphQlзапрос, используя POSTMANв POSTMAN отправку данных из rawвкладки с jsonтипом.

Команда запроса:

{"query":"{user(id:902){id,username,DOB}}"}

Команда мутации:

{ "query": "mutation {createMutations(reviewer:36, comments:\"hello\",data_id: 1659, approved: true ){id}}" }

       #commnent: String Type
       #data_id:Int Type
       #approved:Boolean Type


3

Исходя из ответа Эстевана Лукаса .

Вы также можете использовать заголовок Content-type: application/jsonна почтальоне

И определите тело с помощью:

{
    "query": "{ your_query }"
}

Это легко создается на стороне клиента для формирования полезной нагрузки запроса.

например

введите описание изображения здесь

Вывод:

введите описание изображения здесь



0

Оформить заказ https://github.com/hasura/graphqurl - curl для GraphQL:

  • CLI для создания запросов GraphQL с автозаполнением
  • Запустите GraphiQL локально для любой конечной точки (с настраиваемыми заголовками)
  • Использовать как библиотеку с nodejs или из браузера
  • Поддерживает подписки

Я один из авторов.

gq https://gentle-anchorage-72051.herokuapp.com/v1alpha1/graphql -i

GraphiQL с заголовками



-2

Добавив заголовок, мы можем запустить запрос graphql в почтальоне

Content-type: application/graphql

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.