スキーマ拡張
スキーマ拡張出力エクステンション

出力エクステンション

GraphQLの仕様では、レスポンスのフォーマット方法が詳細に定義されており、返されるマップで使用すべきトップレベルのエントリを規定しています。クエリされたデータは data エントリの下に追加され、エラーは errors エントリの下に追加されます。

しかし、ログ、警告、提案など、追加情報を出力する必要がある場合もあります。これらのエントリは仕様でカバーされておらず、独自のトップレベルエントリとして追加することは禁じられています。代わりに、GraphQLの仕様は自由に利用できる特別な場所を提供しており、任意のカスタムデータを渡すことができます。それがトップレベルの extensions エントリです。

Response Formatセクションで説明されているように:

The response map may also contain an entry with key extensions. This entry, if set, must have a map as its value. This entry is reserved for implementors to extend the protocol however they see fit, and hence there are no additional restrictions on its contents.

Gato GraphQLの「Proactive Feedback」機能は、この機能を活用してGraphQL APIのレスポンスを拡張し、追加情報を提供します:

  • Deprecations
  • Warnings

これにより、クエリの改善点を示すための追加情報をユーザーに提供できます:

{
  "extensions": {
    "warnings": [
      {
        "message": "Dynamic variable with name 'props' had already been set, had its value overridden",
        "locations": [
          {
            "line": 4,
            "column": 25
          }
        ]
      }
    ]
  },
  "data": {
    "posts": {
      "excerpt": "Hello world!",
      "Content": "<p>Hello world!</p>"
    }
  }
}