Существует ли язык определения политики для API GraphQL? - PullRequest
1 голос
/ 08 ноября 2019

Есть ли у нас способ определить политики API-интерфейса GraphQL, который является машиночитаемым и читаемым человеком, который содержит набор правил (другими словами, спецификацию) для описания формата API? Я говорю не о схеме, а о спецификации, в которую мы можем добавить связанные с безопасностью детали (например, значение сложности, которое будет назначено для каждого поля и значения ограничения глубины) или любые другие связанные детали. Есть мысли или идеи? Или мы можем отправить все это внутри самого SDL?

Например, для API REST мы используем Swagger для определения информации о том, как определять пути, параметры, ответы, модели, безопасность и многое другое. Есть ли необходимость в подобном подходе для API GraphQL? Ваш ответ высоко ценится

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

GraphQL сам по себе не зависит от транспорта - у вас может быть служба GraphQL, которая не отображается как конечная точка HTTP - поэтому нет стандартного способа описания конечной точки GraphQL. Тем не менее, ничто не мешает вам использовать существующие стандарты, такие как Swagger / OpenAPI:

openapi: "3.0.0"
info:
  version: 1.0.0
  title: Example
servers:
  - url: http://localhost
paths:
  /graphql:
    post:
      summary: GraphQL endpoint
      operationId: graphql
      requestBody:
        description: GraphQL request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphQLRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GraphQLResponse'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GraphQLResponse'

Это дает вам возможность формально описать специфичные для API функции, такие как заголовки, файлы cookie и т. Д. Функции, такие как ограничения на основе запросасложность или глубина, с другой стороны, специфичны для вашей схемы и в идеале должны быть задокументированы как ее часть. К сожалению, GraphQL на самом деле не предоставляет способа сделать это, кроме свойства description для типов, полей и т. Д. Способ добавления описания для всей схемы в настоящее время находится на рассмотрении .

0 голосов
/ 08 ноября 2019

Насколько я понимаю, вам нужен инструмент для создания документации для API, которые вы строите для параметров и так далее. Если это то, что вы ищете, то тут есть чванство для GraphQL - Swagger-to-GraphQL

Надеюсь, это поможет. !!

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