Как "смоделировать" некоторые запросы GraphQL при пересылке остальных на существующий сервер GraphQL?
Вопрос: есть ли способ смоделировать некоторые типы / запросы / мутации / подписки GraphQL, одновременно "перенаправляя" остальные на существующий сервер GraphQL?
Ситуация: Приложение имеет схему, часть которой была реализована на сервере, а остальная еще не разработана. Работа на внешнем интерфейсе иногда создает зависимость от бэкэнд-команды, к которой я пытаюсь обратиться.
Целевая настройка: Рассматриваемая настройка должна "пересылать" все запросы на существующий сервер GraphQL, кроме тех, которые я хочу смоделировать. Таким образом, для частей, которые были реализованы на сервере (например, аутентификация пользователя), используется реальный сервер, в то время как для частей, которые не были реализованы на сервере, я могу использовать ложные ответы.
Я попытался выполнить поиск, и хотя я нашел способы создания фиктивного сервера GraphQL, я не смог найти что-то, что делает это таким образом.
Я открыт для написания некоторого кода, чтобы это произошло, но, будучи новичком в GraphQL, я подумал, что сначала спросить об этом даст мне несколько полезных советов о том, как справиться с этим.
Между прочим, интерфейс использует Apollo GraphQL (с React), а интерфейс использует Absinthe (с Elixir/Phoenix)
1 ответ
Импортировать {mockServer}
от 'graphql-tools'
, Макет схемы:
import { mockServer } from 'graphql-tools';
import schema from './mySchema.graphql';
const myMockServer = mockServer(schema);
myMockServer.query(`{
allUsers: {
id
name
}
}`);
// returns
// {
// data: {
// allUsers:[
// { id: 'ee5ae76d-9b91-4270-a007-fad2054e2e75', name: 'lorem ipsum' },
// { id: 'ca5c182b-99a8-4391-b4b4-4a20bd7cb13a', name: 'quis ut' }
// ]
// }
// }
чтобы узнать больше о настройке макетов данных в GraphQl, смотрите полные примеры на официальном сайте GraphQL: http://graphql.org/blog/mocking-with-graphql/
Может быть, вы можете использовать https://easygraphql.com/ для решения этой проблемы! Есть несколько пакетов, которые можно использовать:
easygraphql-сейчас: вы можете создать скрипт на вашем
package.json
это будет работать"easygraphql-now schema.gql --graphiql --local -p=7000"
где вы передаете маршрут схемы, флаг local и graphiql и порт... так, когда вы запускаете его; он создаст фиктивный сервер с переданной схемой, поэтому ваше приложение отправит запрос серверу, который ответит на симуляцию вашего запроса / мутации.easygraphql-mock: если вы хотите вернуть полный макет типа, вы можете использовать этот пакет, и с этим вам не нужно создавать приборы для каждого типа.
easygraphql-tester: это похоже на easygraphql-mock, но с той разницей, что вы можете вернуть макет запроса, проверьте документы
Таким образом, вы можете выбрать, какие маршруты должны сделать запрос к easygraphql-now, или просто добавить ответ на запрос / мутацию, используя easygraphql-tester.