GraphQL的一些优点
1、所见即所得
查询的返回结果就是输入的查询结构的精确映射
查询:
{
user(uid:1) {
uid
name
}
}
返回:
{
"data": {
"user": {
"uid": "1",
"name": "xxx"
}
}
}
2、减少网络请求次数
如果设计的数据结构是从属的(例如,上文中文章的作者信息),直接就能在查询语句中指定
{
article(aid:1) {
title
content
author {
uid
name
}
}
}
即使数据结构是独立的,也可以在查询语句中指定上下文,只需要一次网络请求,就能获得资源和子资源的数据(例如,上文中文章的评论信息)
{
article(aid:1) {
title
content
author {
uid
name
}
},
comment {
content,
author {
uid
name
}
}
}
3、代码即文档
GraphQL会把schema定义和相关的注释生成可视化的文档,从而使得代码的变更,直接就反映到最新的文档上,避免RESTful中手工维护可能会造成代码、文档不一致的问题。
4、参数类型强校验
RESTful方案本身没有对参数的类型做规定,往往都需要自行实现参数的校验机制,以确保安全。
但GraphQL提供了强类型的schema机制,从而天然确保了参数类型的合法性。