GraphQL

基本类型

大多数情况下,你所需要做的只是使用 GraphQL schema language 指定你的 API 需要的类型,然后作为参数传给 buildSchema 函数。

GraphQL schema language 支持的标量类型有 StringIntFloatBooleanID,因此你可以在传给 buildSchema 的 schema 中直接使用这些类型。

默认情况下,每个类型都是可以为空的 —— 意味着所有的标量类型都可以返回 null。使用感叹号可以标记一个类型不可为空,如 String! 表示非空字符串。

如果是列表类型,使用方括号将对应类型包起来,如 [Int] 就表示一个整数列表。

这些类型都直接映射 JavaScript,所以你可以直接返回原本包含这些类型的原生 JavaScript 对象。下面是一个展示如何使用这些基本类型的示例:

var express = require('express');
var graphqlHTTP = require('express-graphql');
var { buildSchema } = require('graphql');

// 使用 GraphQL schema language 构建一个 schema
var schema = buildSchema(`
  type Query {
    quoteOfTheDay: String
    random: Float!
    rollThreeDice: [Int]
  }
`);

// root 将会提供每个 API 入口端点的解析函数
var root = {
  quoteOfTheDay: () => {
    return Math.random() < 0.5 ? 'Take it easy' : 'Salvation lies within';
  },
  random: () => {
    return Math.random();
  },
  rollThreeDice: () => {
    return [1, 2, 3].map(_ => 1 + Math.floor(Math.random() * 6));
  },
};

var app = express();
app.use('/graphql', graphqlHTTP({
  schema: schema,
  rootValue: root,
  graphiql: true,
}));
app.listen(4000);
console.log('Running a GraphQL API server at localhost:4000/graphql');

如果你使用 node server.js 运行这个代码,浏览 http://localhost:4000/graphql 你就能尝试这些 API 了。

这些案例展示了如何调用 API 以返回不同类型。如果要向 API 发送不同类型的数据,你还需要学习 如何向 GraphQL API 传参

继续阅读 →传递参数