现在越来越多系统的后台都转向了GraphQL。和REST API相比,GraphQL具有很多优势。下面就来介绍一下GraphQL的基本特点,以及如何安装和配置。

GraphQL
GraphQL系列教程:
- GraphQL的设计理念及安装配置
- Schema的基本使用
- GraphQL中的类型及类型间的关系
- 使用MongoDB作为数据存储层
- 在React中使用GraphQL
- 在AWS Appsync中使用GraphQL
- 如何在serverless中定义GraphQL API-不使用AppSync
- 如何在serverless中定义GraphQL API-使用AppSync并使用Lambda作为数据源
介绍
说起GraphQL,就不得不提REST。其实两者的设计理念是完全不同的。对于REST来说,是服务器端说了算,我的API都在这里了,你需要哪个就直接调用。而GraphQL则是按需请求,只请求自己需要的数据。尤其对于关系型数据库,GraphQL的优势就更加明显了。在获取这种关系型数据时,GraphQL可以一次性获取所有需要的数据,而REST则需要通过多次请求才可以做到。
只不过需要注意,GraphQL只是一个基于Graph的查询语言框架,它本身不具备存储数据的功能,因此还需要数据库层的支持,比如File system/MongoDB/DynamoDB/Opensearch.
Graphiql是GraphQL的查询语言。
设置Express Server
bash
mkdir testapp
mkdir testapp/server
cd testapp/server
npm init
npm install express
添加app.js
javascript
const express = require('express');
const app = express();
app.listen(4000, ()=>{
console.log('listening on 4000');
});
安装nodemon
bash
npm i -g nodemon
nodemon app
这时可以通过4000端口访问应用了。
安装GraphQL
bash
npm i graphql express-graphql
然后修改app.js:
javascript
const graphqlHTTP = require('express-graphql');
app.use('/graphql', graphqlHTTP({
}))
这样就可以通过4000端口访问graphql了。当然,由于数据结构还没有定义,目前直接访问 http://localhost:4000/graphql 还没有太大意义。