Ketika membahas HTTP (Hypertext Transfer Protocol), Anda mungkin bertanya-tanya mengapa metode GET biasanya tidak menggunakan request body. Padahal, dalam dunia permintaan web, sudah umum untuk mengirim data dalam request body untuk menyampaikan informasi ke server. Namun, metode GET, meskipun menjadi salah satu metode HTTP yang paling mendasar, beroperasi sedikit berbeda.
Dalam panduan ini, kami akan menjelaskan mengapa permintaan HTTP GET biasanya tidak menyertakan request body, menjelajahi tujuan metode GET, dan membahas cara mengirim permintaan GET.
Apa Itu Request Body dalam HTTP?
Dalam HTTP, request body adalah bagian dari pesan permintaan yang membawa data dari klien ke server. Ini penting untuk metode seperti POST, PUT, dan PATCH, yang digunakan untuk membuat, memperbarui, atau memodifikasi sumber daya. Misalnya, dalam permintaan POST untuk membuat akun pengguna, detail pengguna ada di request body. Sebaliknya, metode seperti GET atau DELETE biasanya tidak menggunakan request body, berfokus pada URL dan header untuk pengambilan atau penghapusan sumber daya.
Apakah Permintaan GET Memiliki Body dalam HTTP?
Ya, secara teknis, mungkin saja menyertakan request body dalam permintaan HTTP GET. Menurut spesifikasi HTTP/1.1, setiap pesan permintaan HTTP diizinkan untuk berisi message body, dan server harus mengurai pesan dengan mempertimbangkan hal ini. Namun, penting untuk dipahami bahwa semantik server untuk metode GET dibatasi sedemikian rupa sehingga body, jika disertakan, tidak memiliki makna semantik untuk permintaan tersebut.
Sederhananya, meskipun tidak secara eksplisit dilarang untuk menyertakan request body dalam permintaan GET, tidak pernah berguna untuk melakukannya. Tujuan dari metode GET adalah untuk mengambil informasi yang diidentifikasi oleh Request-URI, dan mengubah permintaan dengan menambahkan body dapat menyebabkan komplikasi dan tidak selaras dengan konvensi HTTP standar.
Spesifikasi HTTP/1.1
Spesifikasi HTTP/1.1 (RFC 7230) memang memungkinkan penyertaan request body dalam permintaan GET, meskipun umumnya tidak disarankan. Meskipun secara teknis layak, melampirkan body ke permintaan GET bertentangan dengan prinsip menggunakan GET untuk mengambil data dengan aman tanpa memodifikasi sumber daya server.
Mengapa Permintaan HTTP GET Tidak Menggunakan Body?
Mengapa metode GET tidak menggunakan HTTP body? Selanjutnya, kami akan memperkenalkan alasan utama mengapa metode GET tidak menggunakan request body.
Batasan Spesifikasi HTTP
- Spesifikasi HTTP menyatakan bahwa permintaan metode GET harus aman untuk dikirim ulang.
- Memiliki requested body dapat menyebabkan efek samping yang tidak diinginkan saat mengirim ulang
Potensi Iden yang Dijamin
- Metode GET harus menjamin idempotensi bahwa "hasil tidak akan berubah bahkan jika permintaan GET yang sama diulang"
- Request body dapat merusak idempotensi
Mengimplementasikan Cache
- Hasil GET sering di-cache dan digunakan kembali
- Caching tidak berfungsi jika ada request body
Kemudahan Membuat Bookmark dan Berbagi
- Diharapkan untuk dapat mereproduksi hasil hanya dengan menggunakan URL permintaan GET.
- Jika ada request body, akan sulit untuk mereproduksi hanya dengan menggunakan URL.
Keamanan
- Permintaan GET dapat direkam dalam log, dll.
- Jika informasi pribadi disertakan dalam request body, itu menjadi risiko keamanan.
Untuk alasan di atas, metode GET pada dasarnya tidak menggunakan request body.
Pengecualian: Saat Menggunakan HTTP Body bahkan dalam Metode GET
Namun, ini tidak berarti bahwa Anda tidak selalu dapat menggunakan HTTP body dengan metode GET. Dalam kasus berikut, request body juga dapat dikirim menggunakan metode GET.
Meskipun metode HTTP GET secara tradisional tidak terkait dengan penggunaan request body, ada pengecualian. Misalnya, saat menentukan kriteria pencarian, seperti kata kunci pencarian, Anda dapat memasukkannya ke dalam request body dan menggunakan metode GET untuk transmisi.
Dalam kasus di mana jumlah parameter kueri terbatas, seperti dalam REST API, request body dapat berfungsi sebagai alternatif untuk mengirim data. Selain itu, request smuggling mungkin melibatkan pengiriman request body palsu untuk mengganggu analisis lalu lintas. Dalam praktiknya, meskipun metode GET biasanya mengecualikan request body, ada contoh spesifik di mana aturan ini dapat disimpangkan. Dalam sebagian besar skenario yang melibatkan transmisi data melalui HTTP body, metode seperti POST dan PUT umumnya digunakan.
Apidog: Sepenuhnya Kompatibel dengan Semua Permintaan HTTP (GET, POST, PUT, DELETE)
Jadi apa yang harus saya lakukan jika saya ingin mengirim data dalam HTTP body menggunakan metode seperti GET atau POST? Alat manajemen API yang sangat baik bernama Apidog memiliki dukungan penuh untuk semua metode HTTP, sehingga Anda dapat menentukan salah satu metode HTTP saat mengirim permintaan HTTP, dan memilih apakah akan menggunakan HTTP body atau tidak. bisa.
Juga, jika Anda mengembangkan API sendiri, Anda tidak hanya dapat mendesain API tetapi juga melakukan berbagai fungsi seperti pembuatan spesifikasi API, otomatisasi pengujian, data mocking, dll.

Apidog juga mendukung berbagai metode HTTP termasuk GET dan POST. Kedua Web API menggunakan protokol HTTP, jadi Anda perlu memilih metode HTTP tergantung pada tujuan Anda. Berbicara tentang metode HTTP, selalu ada yang berikut:
- GET (mendapatkan konten)
- POST (menambahkan konten baru)
- PUT (mengubah konten yang ada)
- DELETE (menghapus konten)

Anda dapat memilih metode yang diinginkan dari daftar drop-down metode HTTP, atau jika Anda ingin menggunakan HTTP body, Anda dapat dengan mudah beralih ke tab "Body" dari parameter Request.

Klik tombol "Send", Anda akan menerima respons GET dengan cepat.
