1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ASP.NET CoreでGraphQL APIを構築してみました

Last updated at Posted at 2024-10-21

最近よくGraphQLを耳にしていますが、GraphQL一体何なのか気になりました。なので、GraphQLをざっくり調べた感じ、下にまとめてみました。

GitHubにも:link: サンプルコードをプッシュしましたので、
興味ある方、是非みてみてください:grin:

GraphQLとは何か?

GraphQLはクエリ言語で、主にAPIの設計に使用され、クライアントが必要とするデータを正確に取得できる柔軟性を提供します。

GraphQLの操作方法

1. クエリ(Query)

クエリは、RESTful APIのGETリクエストに相当しますが、GraphQLでは必要なデータのみを指定して取得できる点が特徴です。

2. ミューテーション(Mutation)

ミューテーションは、RESTful APIのPOST、PUT、DELETEリクエストに相当しますが、GraphQLでは一度のリクエストで複数の操作を実行することも可能です。

3. サブスクリプション(Subscription)

サブスクリプションは、リアルタイムでデータの変更をクライアントに通知するために使用します。
これにより、クライアントはサーバーからのイベントを受け取ることができます。チャットアプリケーションやリアルタイムのデータダッシュボードなどで利用されます。

GraphQLとRESTful APIの違い

GraphQLとRESTful APIの違いは表形式でまとめてみました。

項目 RESTful API GraphQL
データ取得の柔軟性 エンドポイントごとに固定されたデータ構造を提供。必要なデータ以上の情報が返されることが多く、複数のリクエストが必要になる場合がある。 クライアントが必要とするデータを正確に指定でき、一度のリクエストで複数の関連データを取得可能。
エンドポイントの数 各リソースに対して複数のエンドポイントが存在する(例:GET /booksPOST /booksGET /books/{id}PUT /books/{id}DELETE /books/{id})。 単一のエンドポイント(通常は /graphql)で全ての操作を処理。
バージョニング エンドポイントのバージョニング(例:/v1/books/v2/books)が一般的。 スキーマの進化により、バージョニングが不要。新しいフィールドや型を追加することで、既存のクエリに影響を与えずに機能を拡張可能。
リアルタイム通信 ポーリングやWebSocketを使用してリアルタイム通信を実現する必要がある。 サブスクリプション機能により、ネイティブにリアルタイム通信をサポート。
エラーハンドリング HTTPステータスコードを使用してエラーを伝達。 レスポンス内の errors フィールドを使用して詳細なエラー情報を提供。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?