跳至主要内容

GraphQL

GraphQL 是一种用于 API 的查询语言。它通常用作 RESTful API 的替代方案,但也可以用作现有 RESTful 服务之上的附加“网关”层。

使用 Prisma ORM,您可以构建连接到数据库的 GraphQL 服务器。Prisma ORM 完全独立于您使用的 GraphQL 工具。在构建 GraphQL 服务器时,您可以将 Prisma ORM 与 Apollo Server、GraphQL Yoga、TypeGraphQL、GraphQL.js 或您在 GraphQL 服务器设置中使用的任何工具或库结合使用。

GraphQL 服务器幕后

GraphQL 服务器由两个主要组件组成

  • GraphQL 模式(类型定义 + 解析器)
  • HTTP 服务器

请注意,GraphQL 模式可以采用代码优先或 SDL 优先的方式编写。查看这篇文章以了解更多关于这两种方法的信息。如果您喜欢 SDL 优先的方法,但仍然希望使您的代码类型安全,请查看GraphQL 代码生成器以根据 SDL 生成各种类型定义。

GraphQL 模式和 HTTP 服务器通常由单独的库处理。以下是当前 GraphQL 服务器工具及其用途的概述

库(npm 包)用途与 Prisma ORM 兼容Prisma 集成
graphqlGraphQL 模式(代码优先)
graphql-toolsGraphQL 模式(SDL 优先)
type-graphqlGraphQL 模式(代码优先)typegraphql-prisma
nexusGraphQL 模式(代码优先)nexus-prisma 早期预览版
apollo-serverHTTP 服务器n/a
express-graphqlHTTP 服务器n/a
fastify-gqlHTTP 服务器n/a
graphql-yogaHTTP 服务器n/a

除了这些独立且单一用途的库之外,还有几个项目正在构建集成的应用程序框架

框架技术栈构建者Prisma ORM描述
Redwood.js全栈Tom Preston-Werner构建在 Prisma ORM 之上将全栈引入 JAMstack。

注意:如果您发现列表中缺少任何 GraphQL 库/框架,请告知我们。

Prisma ORM 和 GraphQL 示例

在以下部分,您将找到一些现成的示例,这些示例展示了如何将 Prisma ORM 与上表中提到的各种工具组合使用。

示例HTTP 服务器GraphQL 模式描述
GraphQL API(Pothos)graphql-yogapothos基于graphql-yoga的 GraphQL 服务器
GraphQL API(SDL 优先)graphql-yogan/a基于 SDL 优先方法的 GraphQL 服务器
GraphQL API -- NestJs@nestjs/apollon/a基于NestJS的 GraphQL 服务器
GraphQL API -- NestJs(SDL 优先)@nestjs/apollon/a基于NestJS的 GraphQL 服务器
GraphQL API(Nexus)@apollo/servernexus基于@apollo/server的 GraphQL 服务器
GraphQL API(TypeGraphQL)apollo-servertype-graphql基于TypeGraphQL代码优先方法的 GraphQL 服务器
GraphQL API(身份验证)apollo-servernexus具有电子邮件密码身份验证和权限的 GraphQL 服务器
全栈应用程序graphql-yogapothos使用 Next.js(React)、Apollo Client、GraphQL Yoga 和 Pothos 的全栈应用程序
GraphQL 订阅apollo-servernexus实现实时 GraphQL 订阅的 GraphQL 服务器
GraphQL API -- Hapiapollo-server-hapinexus基于Hapi的 GraphQL 服务器
GraphQL API -- Hapi(SDL 优先)apollo-server-hapigraphql-tools基于Hapi的 GraphQL 服务器
GraphQL API -- Fastifyfastifymercuriusn/a基于FastifyMercurius的 GraphQL 服务器
GraphQL API -- Fastify(SDL 优先)fastifyNexus基于FastifyMercurius的 GraphQL 服务器

常见问题解答

Prisma ORM 在 GraphQL 服务器中的作用是什么?

无论您使用上述哪些 GraphQL 工具/库,Prisma ORM 都用于您的 GraphQL 解析器中以连接到您的数据库。它与解析器中的任何其他 ORM 或 SQL 查询构建器具有相同的作用。

在 GraphQL 查询的解析器中,Prisma ORM 通常从数据库读取数据以将其返回到 GraphQL 响应中。在 GraphQL 突变的解析器中,Prisma ORM 通常也向数据库写入数据(例如,创建新记录或更新现有记录)。

其他 GraphQL 资源

Prisma 策划了GraphQL 每周,这是一个突出显示来自 GraphQL 社区的资源和更新的时事通讯。订阅以了解最新的 GraphQL 文章、视频、教程、库等。