メインコンテンツへスキップ

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サーバーは主に2つのコンポーネントで構成されています

  • GraphQLスキーマ(型定義+リゾルバー)
  • HTTPサーバー

GraphQLスキーマはコードファーストまたはSDLファーストで記述できることに注意してください。これらの2つのアプローチの詳細については、こちらの記事をご覧ください。SDLファーストのアプローチが好きで、それでもコードを型安全にしたい場合は、GraphQL Code Generatorを使用して、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-WernerPrisma ORM上に構築JAMstackにフルスタックの概念をもたらす。

: リストにないGraphQLライブラリ/フレームワークにお気づきの場合は、お知らせください。

Prisma ORMとGraphQLの例

以下のセクションでは、上記の表で述べたツールの様々な組み合わせでPrisma ORMを使用する方法を示す、すぐに実行できるいくつかの例を紹介します。

HTTPサーバーGraphQLスキーマ説明
GraphQL API (Pothos)graphql-yogapothosgraphql-yogaに基づいたGraphQLサーバー
GraphQL API (SDLファースト)graphql-yogan/aSDLファーストのアプローチに基づいたGraphQLサーバー
GraphQL API -- NestJs@nestjs/apollon/aNestJSに基づいたGraphQLサーバー
GraphQL API -- NestJs (SDLファースト)@nestjs/apollon/aNestJSに基づいたGraphQLサーバー
GraphQL API (Nexus)@apollo/servernexus@apollo/serverに基づいたGraphQLサーバー
GraphQL API (TypeGraphQL)apollo-servertype-graphqlTypeGraphQLのコードファーストのアプローチに基づいたGraphQLサーバー
GraphQL API (認証)apollo-servernexusメールとパスワード認証および権限を持つGraphQLサーバー
フルスタックアプリgraphql-yogapothosNext.js (React)、Apollo Client、GraphQL Yoga、Pothosを使用したフルスタックアプリ
GraphQLサブスクリプションapollo-servernexusリアルタイムGraphQLサブスクリプションを実装するGraphQLサーバー
GraphQL API -- Hapiapollo-server-hapinexusHapiに基づいたGraphQLサーバー
GraphQL API -- Hapi (SDLファースト)apollo-server-hapigraphql-toolsHapiに基づいたGraphQLサーバー
GraphQL API -- Fastifyfastify & mercuriusn/aFastifyMercuriusに基づいたGraphQLサーバー
GraphQL API -- Fastify (SDLファースト)fastifyNexusFastifyMercuriusに基づいたGraphQLサーバー

よくある質問

GraphQLサーバーにおけるPrisma ORMの役割は何ですか?

上記のどのGraphQLツール/ライブラリを使用しても、Prisma ORMはデータベースに接続するためにGraphQLリゾルバー内で使用されます。これは、他のORMやSQLクエリビルダーがリゾルバー内で果たす役割と同じです。

GraphQLクエリのリゾルバーでは、Prisma ORMは通常、データベースからデータを読み取り、GraphQLレスポンスとして返します。GraphQLミューテーションのリゾルバーでは、Prisma ORMは通常、データベースにデータを書き込みます(例: 新規レコードの作成や既存レコードの更新)。

その他のGraphQLリソース

PrismaはGraphQL Weeklyを厳選しています。これは、GraphQLコミュニティからのリソースと更新をハイライトするニュースレターです。GraphQLの記事、ビデオ、チュートリアル、ライブラリなどの最新情報を得るために購読してください。

© . All rights reserved.