Skip to content
Published:

GraphQLの「Serving over HTTP」とは何か

サマリ

Serving over HTTP

https://graphql.org/learn/serving-over-http

GraphQL サーバは GET と POST の 2 種類の HTTP リクエストをハンドリングできるようにします。

マッピングされるパラメータは次のとおりです。

パラメータ意味必須
queryクエリそのもの必須
variablesクエリの変数任意
operationNameクエリの名前。複数のオペレーションを同時に実行する場合には必須任意

GET

GET リクエストでは、GraphQL Query が query というクエリパラメータにマッピングされます。

query HeroQuery($id: ID!) {
  hero(id: $id) {
    name
  }
}

このクエリは、次のようにエンコードされます。

http://myapi.com/graphql?query=query($id: ID!){hero($id: ID!){name}}&operationName=HeroQuery&variables={"id":"avagfads732"}

POST

POST リクエストでは、application/json でリクエストを送信する。次の形式の JSON をボディとして送信されます。

{
  "query": "...",
  "variables": "updateHeroName",
  "operationName": { "id": "avagfads732", "name": "Andrew" }
}

レスポンス

レスポンスは JSON 形式で返される。GraphQL の仕様に則り、dataフィールドかerrorsフィールドが含まれます。

{
  "data": {
    "hero": {
      "name": "Andrew"
    }
  }
}
{
  "errors": [
    {
      "message": "Cannot query field 'hero' on type 'Query'",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ]
    }
  ]
}

[Draft] Transport Specification / GraphQL over HTTP

ここまでの内容が GraphQL 公式で公開されている内容で、ここから先はまだドラフト段階です。

仕様の定義場所

GraphQL Over HTTP
GraphQL Over HTTP favicon graphql.github.io

概要