GraphQL接口概念及测试ABC
Posted TesterQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GraphQL接口概念及测试ABC相关的知识,希望对你有一定的参考价值。
GraphQL简介及例子
GraphQL简介
RESTFul接口规范提出于2000年,在移动互联网的时代得到了大力的发展,成为目前最流行的接口设计规范。随着手机性能的日渐强大,手机端APP功能越来越复杂,与之对应的接口定义越来越多,越来越复杂,性能及维护面临的问题越来越严重。为了应对这种发展的趋势,Facebook在2015年开源了一种新的API接口规范,称为GraphQL,作为REST的替代技术。
GraphQL的资源
中文主站:https://graphql.cn/
英文主站:https://graphql.org/
GraphQL vs REST
我们分别以REST和GraphQL,编写一下CRUD的接口,如下:
Rest接口:
#查询
GET /posts
GET /post/1
#创建
POST /post
#修改
PUT /post/1
#删除
DELETE /post/1
GraphQL接口:
# 查询所有:POST
{
posts {
id
title
content
createDate
}
}
# 查询指定id的title:POST
{
post(id: "5cccc45b7ed65eacb3372aba") {
id
title
}
}
# 创建: POST
mutation {
createPost(post: {title: "New Posts", content: "New Post Content"}) {
id
title
content
createDate
}
}
# 删除:POST
mutation {
deletePost(id: "5cccc45b7ed65eacb3372aba")
}
GraphiQL
GraphiQL是GraphQL的一个调试工具,可以做简单的功能验证
GraphQL接口定义
这是一个GraphQL接口的设计文档:
type Post {
id: ID,
title: String,
content: String,
createDate: String
}
input PostInput{
title: String!,
content: String!
}
type Query{
posts: [Post]
post(id: ID!): Post
}
type Mutation{
createPost(post: PostInput): Post!
updatePost(id: ID!, post: PostInput): Post!
deletePost(id: ID!): String
}
Demo
我们可以用传统的接口测试工具测试GraphQL接口,比如Postman,JMeter等,这里介绍几个命令行的例子帮助理解:
Query All:
# curl -XPOST -H "Content-Type: application/json" -d {\"query\":\"{posts{id,title,content,createDate}}\"} http://locallhost:8080/testerq/graphql
or with httpie:
# http POST http://<IP>/testerq/graphql query={posts{id,title,content,createDate}}
Query One:
# http POST http://<IP>/testerq/graphql query={post(id:\"5d71ea7ee765824b54bd5060\"){id,title,content,createDate}}
Create:
# http POST http://<IP>/testerq/graphql query="mutation{createPost(post:{title:\"New Posts\",content:\"New Post Content\"}){id,title,content,createDate}}"
Update:
# http POST http://<IP>/testerq/graphql query="mutation { updatePost(id: \"5d71fc7ee765824b54bd5063\", post: {title: \"Update Posts\", content: \"Update Post Content\"}) { id, title, content, createDate}}"
Delete:
# http POST http://<IP>/testerq/graphql query="mutation { deletePost(id: \"5d71fc7ee765824b54bd5063\") }"
显然,以上命令所带的参数都来自于前文介绍的接口设计文档,通过一个URL即可实现了数据的CRUD操作!
以上是关于GraphQL接口概念及测试ABC的主要内容,如果未能解决你的问题,请参考以下文章