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

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 (Auth)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 -- Fastifyfastifymercuriusn/aFastifyMercurius に基づく GraphQL サーバー
GraphQL API -- Fastify (SDL ファースト)fastifyNexusFastifyMercurius に基づく GraphQL サーバー

FAQ

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

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

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

その他の GraphQL リソース

Prisma は、GraphQL コミュニティのリソースと最新情報をハイライトするニュースレターである GraphQL Weekly をキュレーションしています。GraphQL の記事、ビデオ、チュートリアル、ライブラリなどの最新情報を入手するために購読してください。