跳到主要內容

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 Schema(型別定義 + 解析器)
  • HTTP 伺服器

請注意,GraphQL Schema 可以採用程式碼優先(code-first)或 SDL 優先(SDL-first)的方式編寫。檢視這篇文章,瞭解這兩種方法的更多資訊。如果您喜歡 SDL 優先的方法但仍希望程式碼型別安全,請檢視 GraphQL Code Generator 以基於 SDL 生成各種型別定義。

GraphQL Schema 和 HTTP 伺服器通常由不同的庫處理。以下是當前 GraphQL 伺服器工具及其用途的概述

庫(npm 包)用途相容 Prisma ORMPrisma 整合
graphqlGraphQL schema(程式碼優先)
graphql-toolsGraphQL schema(SDL 優先)
type-graphqlGraphQL schema(程式碼優先)typegraphql-prisma
nexusGraphQL schema(程式碼優先)nexus-prisma 早期預覽
apollo-serverHTTP 伺服器不適用
express-graphqlHTTP 伺服器不適用
fastify-gqlHTTP 伺服器不適用
graphql-yogaHTTP 伺服器不適用

除了這些獨立的、單一用途的庫之外,還有一些專案正在構建整合的應用框架

框架技術棧構建者Prisma ORM描述
Redwood.js全棧Tom Preston-Werner基於 Prisma ORM 構建將全棧帶入 JAMstack。

注意:如果您發現列表中缺少任何 GraphQL 庫/框架,請告知我們。

Prisma ORM 與 GraphQL 示例

在以下部分中,您將找到幾個可直接執行的示例,展示如何將 Prisma ORM 與上表中提到的不同工具組合使用。

示例HTTP 伺服器GraphQL schema描述
GraphQL API (Pothos)graphql-yogapothos基於 graphql-yoga 的 GraphQL 伺服器
GraphQL API(SDL 優先)graphql-yoga不適用基於 SDL 優先方法的 GraphQL 伺服器
GraphQL API -- NestJs@nestjs/apollo不適用基於 NestJS 的 GraphQL 伺服器
GraphQL API -- NestJs(SDL 優先)@nestjs/apollo不適用基於 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 -- Fastifyfastifymercurius不適用基於 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 Weekly,一份突出 GraphQL 社群資源和更新的通訊。訂閱以瞭解最新的 GraphQL 文章、影片、教程、庫等資訊。

© . This site is unofficial and not affiliated with Prisma Data, Inc.