Augmentasi skema
Augmentasi skemaEkstensi output

Ekstensi output

Spesifikasi GraphQL menjelaskan secara rinci bagaimana respons harus diformat, yang melibatkan pendefinisian entri tingkat atas apa yang harus digunakan dalam map yang dikembalikan: data yang di-query ditambahkan di bawah entri data, dan error di bawah entri errors.

Namun terkadang kita perlu mengeluarkan informasi tambahan, seperti log, warnings, atau saran. Entri-entri ini tidak dicakup oleh spesifikasi, dan kita dilarang menambahkannya di bawah entri tingkat atas tersendiri. Sebaliknya, spesifikasi GraphQL menyediakan lokasi khusus yang dapat kita isi sesuai keinginan, untuk meneruskan data kustom apa pun yang kita inginkan: entri extensions tingkat atas.

Seperti yang dijelaskan dalam bagian 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.

Fitur "Proactive Feedback" Gato GraphQL memanfaatkan kemampuan ini untuk memperluas respons API GraphQL guna menawarkan informasi tambahan:

  • Deprecations
  • Warnings

Kita kemudian dapat memberikan informasi tambahan kepada pengguna, untuk menunjukkan potensi perbaikan pada query:

{
  "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>"
    }
  }
}