【发布时间】:2020-09-17 19:38:46
【问题描述】:
我是 GraphQL 的新手,我正在尝试将我现有的 REST Api 之一转换为 GraphQL API
以下是目前可用于 REST API 的操作 1. POST - 创建单个/多个文档(批量操作)以 Http 204 响应 2. GET - 获取单个文档响应单个文档 Http 200 3. PUT - 更新单个/多个文档(批量操作)以 Http 204 响应
【问题讨论】:
我是 GraphQL 的新手,我正在尝试将我现有的 REST Api 之一转换为 GraphQL API
以下是目前可用于 REST API 的操作 1. POST - 创建单个/多个文档(批量操作)以 Http 204 响应 2. GET - 获取单个文档响应单个文档 Http 200 3. PUT - 更新单个/多个文档(批量操作)以 Http 204 响应
【问题讨论】:
GraphQL 有两种类型的请求,查询(获取内容)和突变(更改内容)。
对于一个简单的 GraphQL 初学者,我可以推荐 Apollo Server。它拥有我见过的最好的文档之一,并为您提供了一个沙箱,您可以在其中测试您的请求。
下一步是定义 GraphQL 架构、类型和解析器。
相关的架构可能类似于
type Document {
id: String
...
}
type Query {
documentById(id: String!): Document
}
type Mutation {
createDocument(document: Document!): Document!
createDocuments(documents: [Document!]): [Document!]
updateDocument(document: Document!): Document!
updateDocuments(documents: Document!): [Document!]
}
schema {
query: Query
mutation: Mutation
}
解析器是您的请求的处理程序,它们可以非常具体,但应该与您已经在 REST 中实现的非常相似。
另外,请记住 gql 不会使用 HTTP 状态来表示错误,所有请求都会导致 200,即使它们失败。如果出现故障,Gql 会在结果中为您提供错误对象,因此您的 API 使用者的错误处理必须反映这一点。
【讨论】:
generalStorage: String 可以适用于您的用例。