GraphQL 的全新功能。据我了解,它是一种用于 API 的查询语言。好的,我明白了。
今天阅读,GraphQL 可以与数据库一起使用,但它不需要数据库。后半部分是我不明白的。
如果没有数据库,此数据存储在哪里?
从规范:
GraphQL 不强制要求实现它的应用程序服务器使用特定的编程语言或存储系统。相反,应用程序服务器利用它们的功能,并将它们映射到 GraphQL 编码的统一语言、类型系统和理念。
GraphQL 响应由一个或多个字段组成。正在查询的 GraphQL 服务的架构描述了哪些字段可用以及可以为这些字段提供哪些参数。但是,GraphQL 服务还必须提供代码来解析这些字段(即为其提供值(。此代码如何获取字段的值,以及它还可能导致的副作用,完全取决于服务。
下面是一个简单的示例。假设我们有以下架构:
type Query {
helloWorld: String
}
这将让我们编写一个查询,例如:
query {
helloWorld
}
为了让helloWorld
解析为null
以外的其他内容,我们还将为它提供一个解析器函数:
function resolve (root, args, ctx, info) {
return "Hello world!"
}
在这里,我们对将要解析的值进行了硬编码。不过,我们可以通过多种方式获得价值。例如:
- 从变量中读取它
- 查询数据库或其他数据存储(如 Redis
- 从 API 请求它
- 从文件系统中读取它
GraphQL 服务通常与数据库或某些 API 交互,但也有一些服务与消息队列、IMAP 收件箱、区块链等交互。因此,您的数据实际上可能来自任何地方。