Menyelami Protokol HTTP
- Get link
- X
- Other Apps
Menyelami Protokol HTTP
Masih ingat, kan, bahwa RESTful API menggunakan protokol HTTP? Anda mungkin penasaran bagaimana cara menggunakannya.
Anda sudah mengetahui pola komunikasi client dengan server. Berikutnya timbul pertanyaan, bagaimana cara server mengidentifikasi request yang masuk pada RESTful API? Misalnya, request untuk mendapatkan data dan request untuk menambahkan data. Tenang, di protokol HTTP terdapat HTTP Method/Verbs. HTTP method/verbs adalah cara client untuk memberitahukan server apa yang harus dilakukan terhadap resources. Berikut beberapa method/verbs yang umum digunakan di HTTP.
- GET untuk mendapatkan data.
- POST untuk menambahkan data.
- PUT untuk mengupdate data.
- PATCH untuk mengupdate sebagian data.
- DELETE untuk menghapus data.
Setiap request yang diproses oleh server tidak semuanya berhasil, ada kalanya request tersebut gagal diproses. Bagaimana cara server untuk memberitahu client bahwa request yang dijalankan sukses atau gagal? Server melakukannya dengan cara melampirkan status code di response.
Status code yang diberikan oleh server memiliki arti tertentu, status code untuk request yang berhasil berbeda dengan yang gagal. Status code terdiri dari 3 digit angka. Berikut nilai-nilai status code yang sering digunakan.
- 200 (OK) - Permintaan client berhasil dijalankan oleh server.
- 201 (Created) - Server berhasil membuat/menambahkan resource yang diminta client.
- 400 (Bad Request) - Permintaan client gagal dijalankan karena proses validasi input dari client gagal.
- 401 (Unauthorized) - Permintaan client gagal dijalankan. Biasanya ini disebabkan karena pengguna belum melakukan proses autentikasi.
- 403 (Forbidden) - Permintaan client gagal dijalankan karena ia tidak memiliki hak akses ke resource yang diminta.
- 404 (Not Found) - Permintaan client gagal dijalankan karena resource yang diminta tidak ditemukan.
- 500 (Internal Server Error) - Permintaan client gagal dijalankan karena server mengalami error (membangkitkan Exception).
- 503 (Service Unavailable) - Permintaan client gagal dijalankan karena server tidak dapat menangani permintaan.
Perlu diingat bahwa status code yang diberikan oleh server haruslah tepat. Penggunaan status code yang tepat dapat meminimalisasi kebingungan dan kesalahpahaman dengan client.
Latihan: Eksplorasi HTTP Method
Di latihan sebelumnya, Anda sudah berhasil melakukan HTTP Request. Seperti yang Anda ketahui, HTTP memiliki beberapa method/verbs seperti POST. Nah, di latihan ini, Anda akan mencoba membuat HTTP Request dengan method POST melalui cURL. Yuk, simak latihannya!
- Petama, bukalah CMD atau Terminal Anda.
- Tuliskan perintah berikut ini.Jika sebelumnya menggunakan HTTP method/verbs GET, sekarang Anda akan menggunakan HTTP method/verbs POST. Untuk alamat request-nya, yaitu https://coffee-api.dicoding.dev/transactions. Perintah -i juga kita tambahkan untuk memberikan informasi detail terhadap response yang diberikan.
- curl -X POST -H "Content-Type: application/json" -d "{\"name\": \"Kopi Tubruk\"}" https://coffee-api.dicoding.dev/transactions -i
- Selanjutnya, tekan Enter. Anda akan melihat hasil dari Web Server seperti berikut ini.Anda pasti sudah bisa membaca response-nya, kan? Sebenarnya tidak berbeda jauh dengan response yang diberikan oleh HTTP method/verbs GET.
- HTTP/1.1 201 Created
- Server: nginx/1.18.0 (Ubuntu)
- Date: Tue, 27 Aug 2024 04:05:31 GMT
- Content-Type: application/json; charset=utf-8
- Content-Length: 46
- Connection: keep-alive
- content-security-policy: upgrade-insecure-requests
- referrer-policy: strict-origin-when-cross-origin
- x-frame-options: DENY
- x-content-type-options: nosniff
- x-xss-protection: 1; mode=block
- vary: origin
- access-control-expose-headers: WWW-Authenticate,Server-Authorization
- cache-control: no-cache
- {"message":"Pesanan berhasil!","success":true}
Perbedaannya terlihat pada status code. Jika sebelumnya status code bernilai 200, sekarang status code bernilai 201 (artinya resources berhasil ditambahkan yakni memesan kopi tubruk). Selain status code, perbedaan lainnya terdapat pada message body. Jika sebelumnya berisi daftar kopi, sekarang message body hanya berisi message “Pesanan berhasil!”.
Keren, sekarang Anda sudah berhasil melakukan HTTP request dengan method/verbs POST. Untuk method lainnya seperti PUT dan DELETE, format request dan response-nya tidak berbeda jauh dengan contoh yang telah kita lakukan.
Merancang URL dengan Baik
Sebelumnya, Anda sudah mencoba mengakses URL dengan method GET dan POST. Namun, tahukah Anda apa itu URL? Agar tidak penasaran, yuk kita bahas.
URL (Uniform Resources Locator) adalah alamat resources yang unik di internet. URL adalah salah satu cara untuk mengambil resources yang digunakan melalui Browser. Masih ingatkah Anda di contoh sebelumnya kita mengambil resources berupa daftar kopi? Kita meminta daftar kopi dengan melakukan HTTP request dan menuliskan URL-nya.
URL terbentuk dari beberapa bagian, ada bagian yang wajib dan opsional. Bagian pertama yang membentuk URL adalah scheme, berikutnya nama domain, dan path. Untuk bagian opsional yang membentuk URL adalah port, query parameter (akan dibahas di modul berikutnya).
Mari kita coba lihat contoh URL lainnya, misalnya https://www.dicoding.com/learningpaths/41. URL tersebut digunakan untuk melihat detail learning path Back-End. Jika dibedah, URL tersebut menggunakan scheme protokol HTTPS, nama domainnya adalah dicoding.com, dan path-nya adalah learningpaths/41.

Karena resources diwakili oleh URL dan URL itu sendiri ditangani oleh Web Server, URL untuk setiap resources bisa berbeda dan tergantung kepada pembuat Web Server sehingga URL akan berbeda di setiap Web Server.
Penting untuk mendesain URL dengan baik. Kita perlu untuk mengikuti aturan umum (convention) dalam mendesain URL agar penggunaan API kita menjadi lebih mudah. URL yang dirancang dengan baik membuat Front-End Developer atau developer lainnya yang mengonsumsi RESTful API kita menjadi bahagia karena URL sudah sesuai aturan umum yang ada.
Lalu, seperti apa convention dalam merancang URL?
Menggunakan Kata Benda untuk Mewakili Resources
Jangan pernah menggunakan kata kerja pada path URL, sebaiknya gunakanlah kata benda.
Alasannya adalah karena kata kerja seperti mendapatkan, menambah, dan menghapus data sudah terwakili oleh HTTP Method/Verbs. Karena kata kerja sudah terwakili secara jelas melalui HTTP Verb, kita tidak perlu lagi menambahkan kata kerja di path URL.

Anda cukup memberikan endpoint GET /products untuk mendapatkan daftar produk atau POST /products untuk menambahkan produk. Berikut contoh yang disarankan.

Menggunakan Kata Jamak pada Endpoint untuk Resource Collection
Gunakanlah kata jamak jika memungkinkan, kecuali untuk resources yang tunggal. Alasan menggunakan kata jamak adalah karena jarang sekali data yang disimpan berjumlah satu. Dengan menggunakan kata jamak, path yang ditulis akan konsisten dengan database (database memiliki lebih dari satu record/data).

Menggunakan Tanda Hubung (-)
Untuk meningkatkan keterbacaan URL, gunakanlah tanda hubung. Perhatikan contoh URL tanpa tanda hubung berikut: https://www.example.com/categories/machinelearning/practices. URL tersebut lebih sulit dibaca, kan?
Kemudian, bandingkan dengan URL yang menggunakan tanda hubung berikut: https://www.example.com/categories/machine-learning/practices.
Jangan Pernah Menambahkan Ekstensi File di URL
Menambahkan ekstensi seperti .html, .json, dan .xml di URL hanya akan membuat URL lebih panjang dan tidak memberikan manfaat apa pun. Oleh karena itu, jangan menuliskan ekstensi file di URL.

Itulah beberapa aturan standar dalam mendesain URL untuk RESTful API. Apakah ketika tidak menerapkan standar ini menyebabkan RESTful API kita error? Jawabannya adalah tidak. Ini hanya aturan standar yang banyak diikuti oleh developer di luar sana. Jika tidak ingin mengikutinya, tidak akan menyebabkan RESTful API error, tetapi akan menyulitkan kolaborasi dan pengguna kesulitan ketika ingin mengaksesnya.
Bersambung ke:
Rangkuman Pengenalan Back-End
- Get link
- X
- Other Apps
Comments
Post a Comment