大多数情况下,你所需要做的只是使用 GraphQL schema language 指定你的 API 需要的类型,然后作为参数传给 buildSchema
函数。
GraphQL schema language 支持的标量类型有 String
、Int
、Float
、Boolean
和 ID
,因此你可以在传给 buildSchema
的 schema 中直接使用这些类型。
默认情况下,每个类型都是可以为空的 —— 意味着所有的标量类型都可以返回 null
。使用感叹号可以标记一个类型不可为空,如 String!
表示非空字符串。
如果是列表类型,使用方括号将对应类型包起来,如 [Int]
就表示一个整数列表。
这些类型都直接映射 JavaScript,所以你可以直接返回原本包含这些类型的原生 JavaScript 对象。下面是一个展示如何使用这些基本类型的示例:
var express = require('express');var { graphqlHTTP } = require('express-graphql');var { buildSchema } = require('graphql');// 使用 GraphQL schema language 构建一个 schemavar schema = buildSchema(`type Query {quoteOfTheDay: Stringrandom: 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 传参。