← Semua pertanyaan
Apa perbedaan utama antara metode permintaan HTTP GET dan POST?
SedangPemulaBackendDevOps

Apa perbedaan utama antara metode permintaan HTTP GET dan POST?

Jawaban singkat
GET meminta data (hanya baca), aman, idempoten, dan dapat di-cache secara default, meneruskan parameter di URL. POST mengirimkan data dalam badan permintaan untuk server untuk diproses, dan tidak aman, idempoten, atau dapat di-cache secara default.

Tujuan

  • GET meminta representasi sumber daya. Berdasarkan spesifikasi, ini bersifat read-only: klien tidak mengharapkan adanya perubahan status server. RFC 9110 mencatat bahwa mengirimkan isi dalam permintaan GET memiliki semantik yang tidak terdefinisi, jadi GET tidak boleh membawa isi.
  • POST meminta sumber daya target untuk memproses data yang disertakan dalam isi permintaan sesuai dengan semantik sumber daya itu sendiri (membuat catatan, mengirimkan formulir, mengunggah file, dll.).

Ke mana perginya data

  • GET membawa parameter dalam string kueri URL (setelah ?, diformat sebagai key=value&...). Ini terlihat di bilah alamat dan dicatat dalam riwayat browser dan log server, dan dibatasi oleh batas praktis panjang URL.
  • POST membawa data di badan permintaan; tipenya diberikan oleh header Content-Type. Formulir HTML biasanya menggunakan application/x-www-form-urlencoded (default) atau multipart/form-data (untuk file). Tidak ada batasan ukuran tingkat protokol yang tetap, tetapi server dan proxy mengonfigurasi ukuran maksimumnya sendiri (misalnya Nginx client_max_body_size).

Properti per RFC 9110

  • Aman: GET aman (hanya baca); POSTING tidak.
  • Idempotent: suatu permintaan dianggap idempoten jika dibuat sebanyak N kali memiliki efek yang sama pada status server seperti yang dibuat satu kali. GET adalah idempoten; POST tidak — mengulanginya dapat menghasilkan duplikat, seperti dua pesanan yang identik. Idempoten tidak sama dengan aman (PUT dan DELETE adalah idempoten tetapi tidak aman), dan tidak menjelaskan apa pun tentang isi respons yang identik.
  • Dapat di-cache: Respons GET dapat di-cache secara default; Respons POST hanya dapat disimpan dalam cache jika menyertakan informasi kesegaran eksplisit dan header Content-Location yang cocok, yang jarang terjadi dalam praktiknya.

Implikasi praktis

  • Gunakan GET untuk pengambilan dan navigasi; hasilnya dapat diulang dengan aman, di-bookmark, dan diambil sebelumnya, dan menyegarkan halaman GET tidak berbahaya.
  • Gunakan POST untuk tindakan perubahan status dan untuk mengirim muatan sensitif atau besar. Menyegarkan atau menavigasi kembali ke halaman POST memicu peringatan "konfirmasi pengiriman ulang formulir" pada browser.
  • Jangan pernah mengirim kata sandi melalui GET — kata sandi tersebut akan masuk ke URL, log, dan riwayat. Ini adalah kebersihan, bukan enkripsi: HTTPS mengenkripsi URL dan isi saat transit, namun URL masih dicatat.

Tindak lanjut umum

  • Metode aman adalah GET, HEAD, OPTIONS; metode idempoten adalah GET, HEAD, PUT, DELETE; POST bukan keduanya.
  • Kedua metode ini didukung oleh formulir HTML (atribut method).
  • "Aman" dalam pengertian RFC berarti tidak ada perubahan status, tidak ada perlindungan data.
  • Idempotensi POST tingkat aplikasi sering kali diterapkan menggunakan kunci idempotensi.
HTTPJaringan

Unduh sekarang dan coba gratis untuk tugas Anda!

Unduh untuk Windows
10 15 kredit gratis • Tidak perlu kartu kreditVersi: Memuat…

Tanpa instalasi - unduh dan jalankan. Tanpa pendaftaran - masuk lewat Google.