GraphQL简单实践
之前就简单接触过GraphQL,但一直没怎么上手实践。最近想用GraphQL来做后端的API层,正好可以真正地用一用了。
以下所有代码均为使用GraphQL的JavaScript的SDK。
Server side
GraphQL官方提供了一个express
插件可以很方便地在express的基础上构建GraphQL API:
var express = require('express');
var graphqlHTTP = require('express-graphql');
var app = express();
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
app.listen(4000);
其中,graphqlHTTP
接收了三个参数,graphiql: true
表示会提供一个方便查询的GraphQL的前端界面,否则只有纯后端的API。另外两个参数后面会详细讲一讲。
GraphQL Schema
GraphQL自创了一套schema的语法,通过graphql.buildSchema
函数可以将这套语法进行解析并生成JavaScript中对应的数据结构:
var {buildSchema} = require('graphql');
var schema = buildSchema(`
input MessageInput {
content: String
author: String
}
type Message {
id: ID!
content: String
author: String
}
type Query {
getMessage(id: ID!): Message
}
type Mutation {
createMessage(input: MessageInput): Message
updateMessage(id: ID!, input: MessageInput): Message
}
`);