graphiql отправить как тело сообщения вместо строки запроса

На узле я использую плагин express-graphql, который предоставляет пользовательский интерфейс GraphiQL.

GraphiQL в этой реализации всегда отправляет запрос в виде строки запроса GET.

Однако, насколько я понимаю GraphQL и, соответственно, документацию по экспресс-графику, также должна быть возможность отправлять запросы в теле запроса POST.

Есть ли способ заставить GraphiQL (т.е. IDE браузера) отправлять запрос в теле POST?

Дополнение от 26 февраля 2017 г.:

Я думаю, что нашел то, что мне нужно было знать сам.

По какой-то причине у меня был запрос в моей строке запроса. Как это:

[myhostname]?query={users{[myfields]}}

Я упустил это из виду.

Как указано в документации по экспресс-графику:

Если он не найден в строке запроса, он будет искать в теле запроса POST.

Это, в свою очередь, означает: если он найден в строке запроса, он НЕ будет искать в теле запроса.

Поэтому он обрабатывается как запрос GET.

Так что все, что мне нужно было сделать, это очистить мой URL от параметров запроса, и запросы поступали с телом POST.

Это было в основном все, что мне нужно было знать.

Так что это действительно была небрежная ошибка, которую я совершил, неправильно просмотрев URL-адрес, то есть не заметив, что в строке запроса есть запрос.


person LongHike    schedule 26.02.2017    source источник


Ответы (1)


GraphiQL — это компонент React, который полностью настраивается с точки зрения того, как ваши данные отправляются на сервер (fetcher). Промежуточное ПО express-graphql в основном извлекает транспилированный код GraphiQL из cdn и отправляет клиенту статическую HTML-страницу, содержащую его: https://github.com/graphql/express-graphql/blob/master/src/renderGraphiQL..js

С этими знаниями вы можете сделать то же самое на отдельном маршруте и отключить встроенный GraphiQL от express-graphql

Также ознакомьтесь с документацией по GraphiQL: https://github.com/graphql/graphiql!

person Balázs Édes    schedule 26.02.2017
comment
Я не уверен, что понял ваш ответ. Но основываясь на том, что я надеюсь понял, позвольте мне переформулировать свой вопрос: как мне настроить GraphiQL таким образом, чтобы он отправлял мои данные в виде тела POST, а не в виде строки запроса GET? - person LongHike; 26.02.2017
comment
Проверьте ссылку в ответе. Он показывает вам полный исходный код, как express-graphql это делает. На самом деле, если вы посмотрите первый пример в репозитории GraphiQL, он покажет вам, как именно это можно сделать в виде почтового запроса: github.com/graphql/graphiql - person Balázs Édes; 26.02.2017
comment
@ p0k8_ GraphiQL разработан именно таким образом. На самом деле fetcher, который извлекает ваши данные, даже не должен работать через HTTP, вы можете использовать совершенно другие протоколы. - person Balázs Édes; 26.02.2017
comment
@ p0k9_ да, это так. Ни GraphQL, ни GraphiQL не ограничены анализом строки запроса или даже HTTP. Инструменты, созданные поверх него, например, express-graphql. - person Balázs Édes; 26.02.2017
comment
Рад, что это помогло! - person Balázs Édes; 26.02.2017