Postman测试GraphQL
1. 概述
在这个简短的教程中,我们将展示如何使用 Postman 测试 GraphQL 端点。
2. 模式概述和方法
我们将使用在GraphQL 教程中创建的端点。提醒一下,模式包含描述帖子和作者的定义:
type Post {
id: ID!
title: String!
text: String!
category: String
author: Author!
}
type Author {
id: ID!
name: String!
thumbnail: String
posts: [Post]!
}
另外,我们还有显示帖子和编写新帖子的方法:
type Query {
recentPosts(count: Int, offset: Int): [Post]!
}
type Mutation {
writePost(title: String!, text: String!, category: String) : Post!
}
使用突变保存数据时,必填字段用感叹号标记。另请注意,在我们的Mutation中,返回的类型是Post,但在 Query 中,我们将获得Post对象的列表。
上面的模式可以在 Postman API 部分加载——只需添加带有 GraphQL 类型的New API并按 Generate Collection:
加载架构后,我们可以使用 Postman 对 GraphQL 的自动完成支持轻松编写示例查询。
3. Postman 中的 GraphQL 请求
首先,Postman 允许我们以GraphQL 格式发送正文——我们只需选择下面的 GraphQL 选项:
然后,我们可以编写一个原生 GraphQL 查询,比如将title、category和 author name放入 QUERY 部分:
query {
recentPosts(count: 1, offset: 0) {
title
category
author {
name
}
}
}
结果,我们将得到:
{
"data": {
"recentPosts": [
{
"title": "Post",
"category": "test",
"author": {
"name": "Author 0"
}
}
]
}
}
也可以使用 raw 格式发送请求,但我们必须将Content-Type: application/graphql 添加到 headers 部分。而且,在这种情况下,身体看起来是一样的。
例如,我们可以更新title、text、category,获取id和title作为响应:
mutation {
writePost (
title: "Post",
text: "test",
category: "test",
) {
id
title
}
}
只要我们使用简写语法,就可以从查询主体中省略操作类型(如查询和 变异)。在这种情况下,我们不能使用操作和变量的名称,但建议使用操作名称,以便于记录和调试。
4. 使用变量
在变量部分,我们可以创建一个 JSON 格式的模式,为变量赋值。这避免了在查询字符串中输入参数:
因此,我们可以修改 QUERY 部分中的recentPosts正文以动态分配变量的值:
query recentPosts ($count: Int, $offset: Int) {
recentPosts (count: $count, offset: $offset) {
id
title
text
category
}
}
我们可以编辑 GRAPHQL VARIABLES 部分,使用我们希望将变量设置为的内容:
{
"count": 1,
"offset": 0
}