GraphQL 是啥?
官方介绍:GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。
通俗点说就是: 我们在使用 Restful 风格接口的时候,增删改查可能会有四个接口,但是如果你用了 GraphQL 的话,可能就只需要一个接口,通过传递不同的模板参数,去执行不同的增删改查操作。
你可以灵活地去调用 GraphQL 去获取你自己想要的数据。
简单实践
GraphQL 优势?
很多公司的后端使用了 GraphQL 来代替之前的 Restful 接口风格,那么为啥呢?GraphQL 到底有什么优势,值得这些公司去使用呢?
1.灵活
我们使用 Restful 的时候,大部分情况下一个接口只能返回一种数据,如果你想要另一种数据,那只能是重新再写一个接口。
但是在 GraphQL 中,返回什么样的数据,可以由调用方去决定,就比如刚刚实践的例子,假如我传了:
那么数据库查询会返回给我两个字段的数据:
如果你只需要一个字段,那么你可以传:
那么数据库查询就只会返回给你一个字段:
2.精简
其实刚刚已经举过例子了,Restful 风格下,增删改查需要写四个接口,但是 GraphQL 可能只需要一个接口即可,大大减少了接口代码。
3.统一
因为 GraphQL 查询的入口大大减少,甚至可能一个项目只有一个查询入口,所以统一了查询的规范。
GraphQL 局限性
1.学习成本
大部分前后端都习惯了 Restful 风格,想要转 GraphQL 需要一定的学习成本,所以我们可以看到一般使用 GraphQL 的都是初创公司或者大公司,只有这些公司才有条件或者成本区做这件事。
2.建设成本
很多公司都一直是建设 Restful 的基础架构,如果想要转 GraphQL,那意味着可能需要改造现有的架构,这是需要时间成本和建设成本的。
3.鸡肋?
说 GraphQL 好用吧,确实挺好用,但是说非他不可吧,好像也不是。感觉就是还没到非用他不可的地步。
4.安全性
正是因为 GraphQL 的灵活性开放性,所以导致了他的安全系数大大降低。
调用方能灵活获取数据,那是万万不可的,因为有一些私密数据可不能给他们去获取~
可能还有遇到一些恶意用户,对你的数据进行查询,进而对你造成不利。
5.排队?
只有一个查询入口的话,那如果很多调用方同时调用的话,难道要排队查询吗?这样的话会不会查询时长会很久?