Как бы вы предоставили конечную точку API пользователю, который принимает параметры? (GrapQL / ApolloServer) - PullRequest
0 голосов
/ 06 августа 2020

Я новичок в GraphQl / ApolloServer (и серверных практиках в целом) и был заинтересован в создании небольшого личного проекта для получения опыта.

Процесс проекта выглядит следующим образом:

  • Пользователь может добавить конечную точку к своему действию формы с добавленным ключом API, например, https://myprojectsendpoint.com/[apikey]

  • Сервер обрабатывает отправку

API-интерфейс graphql будет доступен по адресу https://myprojectsendpoint.com/graphql. Моя конечная цель - предоставить пользователю более красивый URL-адрес (например, https://myprojectsendpoint.com/[apikey]), который будет фактически псевдонимом для исходного URL-адреса api graphql.

Мой вопрос: можно ли как-то настроить URL-адрес api graphql, который видит пользователь?

Придется ли мне создать эту конечную точку и использовать ее для связи / передачи ключа api на сервер graphql оттуда?

Любые знания по этому поводу будут он очень признателен! При необходимости я с радостью предоставлю более подробную информацию.

1 Ответ

0 голосов
/ 06 августа 2020

в соответствии со спецификациями graphql / ApolloServer, он работает с набором схем и резолверов и предоставляет одну конечную точку /graphql, поэтому для доступа к любой информации на резолверах вам необходимо передать ее как запрос,

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

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

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

type Query {
  rollDice(numDice: Int!, numSides: Int): [Int]
}

Resolver:

var root = {
  rollDice: ({numDice, numSides}) => {
   // any code you want server to execute
  }
};

query:

query RollDice($dice: Int!, $sides: Int) {
  rollDice(numDice: $dice, numSides: $sides)
}`

TL; DR мы можем передавать аргументы в запросе grphql, который доступен для распознавателей Ref: https://graphql.org/graphql-js/passing-arguments/

...