我稍微试了试GraphQL
2016/11/04晚上,我在Twitter上看到了很多有关GraphQL的讨论,于是我不知道这是什么东西,就发了一条推文。结果,我被官方账号关注了,也加入了一些相关的群组,让我有机会去尝试一下。
GraphQL (图灵使用者界面)
请看这个链接:http://graphql.org/
GraphQL是什么?
从我稍微尝试触摸的直觉来看,这可能是一个能指定结果的RESTful API,可能是因为我用Node.js搭建了服务器的缘故。
样本(Node.js)
{
"devDependencies": {
"express": "^4.14.0",
"express-graphql": "^0.5.4",
"graphql": "^0.7.2"
}
}
var express = require('express');
var graphqlHTTP = require('express-graphql');
var { buildSchema } = require('graphql');
var schema = buildSchema(`
type Query {
character(val: Int): Character!,
func(val: Int): Int
},
type Episode {
name: String!
},
type Character {
name: String!
episodes: [Episode]!
}
`);
var root = {
character : {
name: "name1",
episodes: [
{ name: "child1"},
{ name: "child2"},
{ name: "child3"},
]
},
func: (val) => {
console.log(val);
return val.val * 2;
},
};
var app = express();
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
app.listen(4000, () => console.log('Now browse to localhost:4000/graphql'));
使用npm install命令安装包的模块
使用node server.js命令执行
成果
当您在浏览器中访问 http://localhost:4000/graphql 时

因此,請來

左边是查询内容,右边是结果。从服务器返回的结果(JSON)中,好像可以指定只获取这样的字段吧?哈哈。而且还可以指定函数的参数,看起来可以做很多事情呢?哈哈。
请注意
如果模式中没有类型为查询的节点,它会报错(可能是在根节点的结构定义中给定了名称)。
触动心灵的感受
请求来了,可以将需要的数据存储为KVS(键值存储),然后只返回客户端要求的数据,还可以根据要求进行格式化,这样在测试时也能更容易地发现错误。
另外,可以使用接口来定义模式,或者自己定义特定类型也行,这可能不错。
但是,为什么类型中没有Int64呢,我在想为什么呢。
另外,希望官方网站的文档能够说明使用了什么样的数据,因为现在很难理解……(我在参数这里纠结了大约30分钟,真是太抱歉了。)