APIがエラーを返すとき、ステータスコードとは別に、ボディに原因を書いたJSONが入っている。 コードは「どの種類の失敗か」の分類までしか語らないので、原因の特定はボディを読む。
読む順番は3段で固定。
message と code を読む — 形式はAPIごとに違うが、message・code・details の3点セットが定番code を引く — 対処法はここに書いてある必須フィールドを欠いた POST に対する実際の返答。コード(422 = 内容の検証で弾いた)より、ボディのほうがずっと具体的。
{
"message": "Validation Failed",
"errors": [
{ "resource": "Issue", "field": "title", "code": "missing_field" }
],
"documentation_url": "https://docs.github.com/..."
}
「Issue の title が missing_field」=タイトルを付け忘れた、まで一発でわかる。
Content-Type: application/problem+json)。見かけたら「標準形式に従っているAPI」と読めばいい