首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Swagger \ OpenAPI记录GraphQL?

如何使用Swagger \ OpenAPI记录GraphQL?
EN

Stack Overflow用户
提问于 2020-09-11 01:29:05
回答 4查看 23.3K关注 0票数 14

如何使用Swagger记录GraphQL?我们有一个庞大的后端REST API,最近部分开始使用GraphQL。为了记录API,我们使用Swagger。

问题是:如何使用Swagger(OpenAPI)来记录GraphQL端点?在Swagger或GraphQL的官方文件中绝对没有相关信息。

EN

Stack Overflow用户

发布于 2021-12-23 08:15:22

我也有同样的要求。我基本上所做的就是把GraphQL描述成一个REST API -好吧,基本上它是:它是一个HTTP端点,它使用POST方法,它在主体中发布json数据,它接收json作为应答。

我发现用swagger记录所有的查询是不可能的,但有可能达到这样的程度,所以它是可用的。

这是我创建的swagger yaml:

代码语言:javascript
运行
复制
swagger: "2.0"
info:
  description: "Graphql swagger"
  version: "1.0.0"
  title: "Graphql swagger"
host: "my-graphql-host.com"
basePath: "/"
schemes:
- "https"
paths:
  /api:
    post:
      summary: "GraphQL"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      responses:
        "200":
          description: "successful operation"
          schema:
            $ref: "#/definitions/GraphQLResponse"
      parameters:
        - in: body
          name: body
          description: "GraphQL query"
          required: true
          schema:
            $ref: "#/definitions/GraphQLQuery"
definitions:
  GraphQLQuery:
    type: "object"
    properties:
      query:
        type: "string"
  GraphQLResponse:
    type: "object"
    properties:
      data:
        type: "object"

这是此swagger文档的预览形式:

如您所见,它只描述了一个查询被接受,而没有描述哪些查询被接受。

因此,要执行查询,您需要将其转换为字符串并将其传递给正文。这意味着,执行以下查询:

代码语言:javascript
运行
复制
query {
  searchProducts(term: "MySearchTerm", language: EN) {
    hits {
      source {
        id
        Name
        Number
      }
    }
  }
}

需要转换为

代码语言:javascript
运行
复制
{
    "query": "query {  searchProducts(term: \"MySearchTerm\", language: EN) {    hits {      source {        id        Name        Number      }    }  }}"
}
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63834848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档