URL parameter encoding atau percent-encoding adalah mekanisme esensial dalam komunikasi REST API untuk menerjemahkan karakter khusus ke dalam format yang aman ditransmisikan melalui URL (Uniform Resource Locator). Karakter seperti spasi, tanda tanya, ampersand, dan simbol non-ASCII harus dikodekan karena protokol HTTP membatasi set karakter yang diizinkan dalam URI (Uniform Resource Identifier).
Dalam praktiknya, ketika sebuah REST API menerima data invalid akibat parameter yang tidak dienkode dengan benar, server umumnya akan merespons dengan kode status HTTP yang menunjukkan kesalahan klien, seperti 400 Bad Request atau 422 Unprocessable Entity. Berdasarkan dokumentasi dan diskusi teknis populer seperti Stack Overflow, penanganan kode status HTTP untuk data invalid sangat bergantung pada bagaimana API memvalidasi payload dan query string yang diterima.
Tabel Pemetaan Karakter Spesial dan URL Encoding
Berikut adalah tabel referensi untuk karakter umum yang wajib dikodekan sebelum dimasukkan ke dalam URL query parameter pada REST API:
| Karakter Asli | Nama Karakter | Kode URL (Percent-Encoding) |
|---|---|---|
| Spasi | Space | %20 atau + |
| ! | Exclamation Mark | %21 |
| # | Number Sign / Hash | %23 |
| $ | Dollar Sign | %24 |
| % | Percent Sign | %25 |
| & | Ampersand | %26 |
| + | Plus Sign | %2B |
| / | Slash | %2F |
| ? | Question Mark | %3F |
Penerapan Teknis dalam Pemrograman
Sebagian besar bahasa pemrograman modern telah menyediakan fungsi bawaan untuk melakukan enkode dan dekode URL secara otomatis. Menggunakan fungsi bawaan ini mencegah kesalahan sintaksis yang sering terjadi jika dilakukan secara manual.
Contoh Kode JavaScript
// Menggunakan encodeURIComponent untuk parameter tunggal
const baseUrl = "https://api.example.com/search";
const query = "belajar rest api & JSON!";
const encodedQuery = encodeURIComponent(query);
const finalUrl = `${baseUrl}?q=${encodedQuery}`;
console.log(finalUrl);
// Output: https://api.example.com/search?q=belajar%20rest%20api%20%26%20JSON%21
Contoh Kode Python
import urllib.parse
base_url = "https://api.example.com/search"
params = {'q': 'belajar rest api & JSON!'}
# Menggunakan urlencode untuk kamus parameter
encoded_params = urllib.parse.urlencode(params)
final_url = f"{base_url}?{encoded_params}"
print(final_url)
# Output: https://api.example.com/search?q=belajar+rest+api+%26+JSON%21
Troubleshooting Respon Error API
Ketika parameter gagal di-decode atau tidak valid di sisi server, aplikasi klien harus siap menangani respons error. Berikut langkah-langkah penanganan di lapangan:
- Periksa Status HTTP: Identifikasi apakah respons berupa
400 Bad Requestyang mengindikasikan struktur URL atau parameter rusak. - Validasi Klien: Pastikan fungsi seperti
encodeURIComponent()di JavaScript atauurllib.parse.urlencode()di Python telah dipanggil sebelum permintaan HTTP dikirimkan. - Inspeksi Log Server: Lihat log error pada server REST API untuk melihat apakah karakter khusus terpotong oleh reverse proxy (seperti Nginx atau Apache) sebelum mencapai aplikasi utama.