意味
更新の消失を防ぐため、サーバーはリクエストが条件付き(If-Match など)であることを求めています。
よくある原因
- 楽観的ロックを強制する API に If-Match なしで PUT や PATCH を送った
対処法
クライアント・閲覧者の場合
リソースを GET して ETag を取得し、更新時に If-Match で送ります。
サイトや API の運営者の場合
どのヘッダーが必要かをボディで説明します。
レスポンス例
HTTP/1.1
HTTP/1.1 428 Precondition Required
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
Content-Type: application/problem+json
{
"type": "about:blank",
"title": "Precondition Required",
"status": 428,
"detail": "Send If-Match with the ETag you last read."
} 仕様
よくある質問
› API が If-Match を要求するのはなぜ?
2 つのクライアントが気づかないうちに互いの変更を上書きするのを防ぐためです。
› 428 と 412 の違いは?
428:前提条件が送られていない。412:送られたが成り立たなかった。