GraphQLの基本とREST APIとの違い
GraphQLはFacebookが開発したAPIのクエリ言語です。 クライアントが必要なデータだけを指定して取得できるため、 オーバーフェッチやアンダーフェッチの問題を解消できます。
RESTとGraphQLの比較
- REST: URLがリソースを表す。複数エンドポイントが必要
- GraphQL: 単一エンドポイント。クエリで取得データを指定
クエリの書き方
# 必要なフィールドだけ取得
query {
user(id: "1") {
name
email
posts {
title
createdAt
}
}
}
ミューテーション(書き込み)
mutation {
createPost(input: {
title: "新しい記事"
body: "本文..."
authorId: "1"
}) {
id
title
createdAt
}
}
スキーマ定義
type User {
id: ID!
name: String!
email: String!
posts: [Post!]!
}
type Post {
id: ID!
title: String!
body: String!
author: User!
createdAt: String!
}
GraphQLに向くケース
- モバイルアプリなど通信量を最小化したいクライアント
- 複数チームが異なるデータを必要とするフロントエンド
- 頻繁にUIが変わり、API変更コストを下げたい場合
まとめ
GraphQLはRESTの代替ではなく補完的なアプローチです。 シンプルなCRUDにはRESTが、複雑なデータ要件にはGraphQLが向いています。