Slate Errors

Success (2xx)

202

Accepted

— 受け付けました

まずは確認: よくある原因 TOP3

  1. バッチジョブやキューイング処理の起動
    受け取りはした、結果は後で別の場所に出る
  2. 重い計算をバックグラウンドに渡した
    同期で結果を返さない設計の API でよく出る
  3. メール送信やレポート生成の予約
    受け付けた事実だけを返し、進捗は別エンドポイント

うまくいった証

202 は「君の依頼は確かに受け取った、ただし処理結果はあとで別途お伝えする」というサインです。 プールで例えると、「水泳大会のエントリーはちゃんと受け付けたよ。出走表は明日の朝に貼るから、そのとき確認してね」とコーチが言ってくれる——あの予約完了の感触です。

最終結果は返らないけれど、依頼そのものは確実にサーバーに届いた、と保証してくれる便利なサイン。バックグラウンドジョブや非同期 API 設計でよく使われ、レスポンスボディには進捗確認用の URL が入ることもあります。

プールからのひとこと

プールでの大会や検定の申込みは、その場で結果は出ません。受付の先生は「申込書を確かに受け取りました、結果は後日掲示します」と一言伝えて、用紙を引き出しにしまいます。生徒は安心して帰れる。

202 もそれと同じで、サーバーが「受理した、続きは別の経路で連絡する」と返している状態。最後の結果を知るには、別の API を叩いたり、Webhook を待ったりすることになります。

次への一歩

うまくいった、次はこうしてみよう:

  1. 進捗確認用の URL を保管:レスポンスや Location ヘッダのジョブ ID を記録
  2. ポーリングや Webhook で結果を待つ:頻度や上限を決めてから問い合わせる
  3. UI に「処理中」表示:ユーザーには「受付済み、結果は追って」と伝える
  4. キューと進捗 API を分けて設計 (管理者向け):受付・進行・完了を別々のエンドポイントで管理する

実際にはこう見える

$ リクエスト

curl -i https://example.com/some/path

↓ レスポンス

HTTP/1.1 202 Accepted
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>
<html><body><h1>202 Accepted</h1></body></html>

似ているケース

もっと知りたい