把GraphQL和React放在一起就如同巧克力配花生酱,味道好极了。
GraphQL可以帮你编写出强表达性的查询来从API精确拉取数据。
GraphQL类型系统是非常强大的,可以为API进行验证并集成灵活的查询。
有时你可能仍然需要REST,没关系,它们是可以和平共处的。
GraphQL可以在任何后端软件中实现,那么要如何将GraphQL集成到后端服务中呢?
在波士顿的一间办公室里,我、PacMan女士还有坐在我对面的客户Greg正围着乒乓球桌喝啤酒。Greg在相关业务上浸淫已久,是个令人钦佩的开发者。他直截了当地问我:“GraphQL有没有为生产环境做好准备?”
这么问也很合理,因为他从来没用过GraphQL。而事实上,GraphQL在年才开源,年才真正作为标准实施。除了Facebook,还有没有人真正在使用GraphQL呢?Greg和他的团队都非常熟悉REST,他们在过去几年里用REST构建过好几个应用。他们还使用Swagger来进行验证和文档生成,而且也用的很顺手。所以,他才会质疑GraphQL是否真的是最好的应用程序通信管道。
在回答Greg的问题之前,我们先回到GraphQL本身。
二、开门见山,GraphQL是什么?GraphQL内涵丰富,它是一个流行词。酷小孩们用它,所以有人认为它只是昙花一现,就像今天的technobabel、shiny、newhotness等等酷酷的形容词。但是我保证绝非如此。
1.首先,GraphQL不是什么?在继续之前,先来消除一些关于GraphQL的常见误解。
误解:客户端可以任何方式请求任何数据。例如某一客户端想要所有的用户和他们最爱的冰淇淋类型。只要服务器端的模式定义了这个关系是就能实现。
真相:客户端将受限于GraphQL服务器端定义的数据关系。
误解:GraaphQL是否兼容MSSQL?不兼容,它也不兼容MongoDB、Oracle、MySQL、PostgreSQL、Redis、CouchDB和Elasticsearch。
真相:GraphQL并不直接对接数据库。它接收来自客户端的请求,然后由后端软件通过请求数据来查询数据存储,并返回与GraphQL模式格式相容的数据。
误解:GraphQL和REST你必须二选一。胡说。真相:可以轻松地在服务器端同时提供它们。
2.GraphQL是一种强类型语言说真的,GraphQL是一种语言?那当然!先来看看下面这些简单的定义,这是一个缩略图的定义。
typeThumbnail{#图片的URL,!表示必需uri:String!#宽度(像素)width:Int#高度(像素)height:Int#作为图片title标签的字符串title:String}
如你所见,以上定义了一个名为Thumbnail的类型或对象。这个对象有几个属性,其中url是一个string,width和height是整数,title也是一个string。
这里有一个很棒的GraphQL语言参考手册(预防白癜风复发最有效的方法北京看白癜风最好医院的地方