在大多数情况下,您只需要使用 GraphQL 模式语言为您的 API 指定类型,该语言作为 buildSchema
函数的参数。
GraphQL 模式语言支持 String
、Int
、Float
、Boolean
和 ID
的标量类型,因此您可以在传递给 buildSchema
的模式中直接使用它们。
默认情况下,每种类型都是可空的 - 返回 null
作为任何标量类型都是合法的。使用感叹号来表示类型不可为空,因此 String!
是一个不可为空的字符串。
要使用列表类型,请将类型括在方括号中,因此 [Int]
是一个整数列表。
这些类型中的每一个都直接映射到 JavaScript,因此您可以在返回这些类型的 API 中直接返回普通的 JavaScript 对象。以下是一个示例,展示了如何使用一些基本类型
var express = require("express")var { createHandler } = require("graphql-http/lib/use/express")var { buildSchema } = require("graphql")
// Construct a schema, using GraphQL schema languagevar schema = buildSchema(` type Query { quoteOfTheDay: String random: Float! rollThreeDice: [Int] }`)
// The root provides a resolver function for each API endpointvar 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.all( "/graphql", createHandler({ schema: schema, rootValue: root, }))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 传递参数。