202 Accepted
Penggunaan
Status code 202 Accepted berfungsi sebagai tanda terima: server telah menerima permintaan dan berniat memproses kiriman tersebut. Dalam praktiknya, ini berarti server telah memvalidasi format permintaan dan menempatkan pekerjaan itu ke dalam antrean internal. Tugas yang diantrekan sering kali berupa proses berdurasi panjang atau bagian dari operasi batch.
Tidak ada mekanisme bagi server untuk mengirim respons susulan yang menunjukkan hasil akhirnya. Klien bertanggung jawab melakukan polling secara berkala, sepanjang server menyediakan endpoint status.
Dampak SEO
Googlebot menunggu sebentar untuk mendapatkan konten ketika menemui respons 202. Konten yang diterima dalam rentang waktu tunggu tersebut diteruskan ke alur pengindeksan, tetapi pengindeksan tidak dijamin.
Begitu respons sukses 200 tiba, polling dihentikan. Hasil valid lainnya mencakup 201 ketika sumber daya baru telah dibuat dan tersedia pada URI di header Location, atau 204 ketika pekerjaan selesai tanpa konten untuk dikembalikan.
Contoh
Klien mengirimkan data XML yang mendefinisikan sebuah job. Server mengonfirmasi penerimaan kiriman tersebut. Permintaan berikutnya dari klien memeriksa apakah pekerjaan sudah selesai. Pada akhirnya, server menandakan penyelesaiannya.
Permintaan
POST /job HTTP/1.1
Host: example.com
Content-Type: application/xml
Content-Length: 68
<?xml version="1.0"?>
<job>
<id>125</id>
<task>G01</task>
</job>
Respons
HTTP/1.1 202 Accepted
Link: </job/status/125>; rel="http://example.re/job-status"
Content-Length: 0
Permintaan status 1
GET /job-status/125 HTTP/1.1
Host: example.com
Respons
HTTP/1.1 202 Accepted
Content-Length: 0
Permintaan status 2
GET /job-status/125 HTTP/1.1
Host: example.com
Respons
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 18
{"success":"true"}
Setelah status code 200 tiba, klien berhenti melakukan polling dan menindaklanjuti hasilnya.
Isi respons pada 202
Respons 202 Accepted diizinkan menyertakan message body. Isi tersebut umumnya memuat status permintaan saat ini, tautan ke endpoint pemantau status, atau perkiraan waktu operasi akan selesai. Berbeda dengan 201 yang menunjuk ke sumber daya yang telah dibuat, isi respons 202 menggambarkan operasi yang masih tertunda itu sendiri.
202 vs 201
Respons 201 memastikan sebuah sumber daya telah dibuat dan langsung tersedia. Respons 202 memastikan permintaan telah diterima tetapi pemrosesannya belum selesai. Gunakan 201 ketika sumber daya sudah ada pada saat respons dikirim. Gunakan 202 ketika pekerjaan diantrekan atau bersifat asinkron dan hasil akhirnya belum diketahui.
Referensi kode
.NET
HttpStatusCode.Accepted
Rust
http::StatusCode::ACCEPTED
Rails
:accepted
Go
http.StatusAccepted
Symfony
Response::HTTP_ACCEPTED
Python3.5+
http.HTTPStatus.ACCEPTED
Java
java.net.HttpURLConnection.HTTP_ACCEPTED
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_ACCEPTED
Angular
@angular/common/http/HttpStatusCode.Accepted