LATIHAN MEMBUAT PERMINTAAN HTTP (HTTP REQUEST)

Latihan Membuat Permintaan HTTP (HTTP Request)

Apa sebenarnya bentuk permintaan dan respons HTTP? Penasaran? Mari kita coba membuat request pada web service kedai kopi dengan cURL. Silakan buka CMD atau Terminal di komputer.

"cURL atau Client URL merupakan software berbasis command line yang dapat melakukan transaksi data melalui beberapa protokol internet, salah satunya HTTP/S. cURL dapat diakses secara langsung tanpa proses install melalui Terminal (Linux dan Mac) atau CMD (Windows)." 



Kita akan melakukan tiga skenario berikut:

    1. Meminta daftar kopi tersedia.
    2. Membeli kopi yang tersedia.
    3. Membeli kopi yang tidak tersedia.


Dalam skenario pertama, buatlah permintaan untuk mendapatkan daftar kopi yang tersedia. Kemudian, tulis kode berikut pada CMD atau Terminal kita.


curl -X GET https://coffee-api.dicoding.dev/coffees -i

Kita bedah kodenya yuk:
    1. curl : merupakan perintah untuk menggunakan program cURL pada Terminal atau CMD.
    2. -X GET : menetapkan HTTP method/verb yang kita gunakan. GET berarti kita ingin mendapatkan
        sebuah data.
    3. https://coffee-api.dicoding.dev/coffees : merupakan alamat request yang dituju.
    4. -i : memberikan informasi detail terhadap response yang diberikan (HTTP response headers).


Setelah kita menulis kode, tekan enter. Kita akan melihat tanggapan berikut dari web server:

HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Mon, 01 Nov 2021 07:41:52 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 188
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
accept-ranges: bytes
 
{"message":"Berikut daftar kopi yang tersedia","coffees":[{"id":1,"name":"Kopi Tubruk","price":12000},{"id":2,"name":"Kopi Tarik","price":15000},{"id":3,"name":"Kopi Jawa","price":18000}]}

Kita berhasil menerima tanggapan pertama dari server. Fokus pada kode yang ditebalkan, dan mulai bedah segera.

    1. HTTP/1.1 : merupakan HTTP version yang digunakan oleh web server dalam menanggapi
        permintaan.

    2. 200 : merupakan status code dari request. Karena status code diawali dengan angka 2, berarti
        request kita berhasil dilakukan.

    3. OK : merupakan pesan teks dari status code, 200 berarti “OK”.

    4. Content-Type: application/json; : merupakan tipe konten yang digunakan web server dalam
        memberikan data. Karena nilainya application/json, itu berarti server menggunakan format json.

    5. JSON Data (kode di bagian bawah) : merupakan data yang diberikan oleh web server. Kita bisa
        melihat web server memberikan informasi kopi yang tersedia beserta harganya menggunakan
        format JSON.

Skenario pertama selesai! Mudah bukan untuk melakukan request melalui protokol HTTP?

Lanjutkan ke skenario kedua dengan menulis perintah berikut untuk membeli kopi yang tersedia:

curl -X POST -H "Content-Type: application/json" -d "{\"name\": \"Kopi Tubruk\"}" https://coffee-api.dicoding.dev/transactions -i

Meskipun ada beberapa perbedaan, struktur kode terlihat sama. Mari kita bedah:
    1. -X POST : dalam request kali ini kita menggunakan method POST. Karena membeli bukan hanya
        meminta data, tapi akan mengubah jumlah stok kopi yang ada. Selain itu kita juga melampirkan
        data berupa kopi apa yang akan dipesan. Sehingga tidak masuk akal bila kita menggunakan GET
        request.

    2. -H “Content-Type: application/json” : Menetapkan nilai “Content-Type: application/json” pada
        Header request. Fungsinya untuk memberitahu server bahwa kita melampirkan data dalam bentuk
        JSON.

    3. -d <JSON Content> : merupakan data yang dilampirkan pada request. Data ini berformat JSON
        dan memiliki informasi kopi apa yang ingin dipesan.

    4. https://coffee-api.dicoding.dev/transactions : Merupakan alamat request yang dituju untuk membeli
        kopi.

Silakan tekan enter setelah menuliskan perintah di atas. Dari web server, kita akan menerima tanggapan seperti ini:

HTTP/1.1 201 Created
Server: nginx/1.18.0 (Ubuntu)
Date: Mon, 01 Nov 2021 07:44:29 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}

Fokus pada kode dengan tanda tebal. Kita sudah tahu hasilnya, kan? Pesanan kopi telah dipenuhi dengan baik.

Selanjutnya, pergi ke skenario terakhir—membeli kopi yang tidak tersedia. Tulis perintah yang sama seperti sebelumnya, tetapi ganti tipe kopi yang tidak ada pada daftar. Kopi Luwak adalah contohnya.

curl -X POST -H "Content-Type: application/json" -d "{\"name\": \"Kopi Luwak\"}" https://coffee-api.dicoding.dev/transactions -i

Kita akan menerima tanggapan seperti ini. Jika kita menulis perintahnya dan menekan enter.

HTTP/1.1 404 Not Found
Server: nginx/1.18.0 (Ubuntu)
Date: Mon, 01 Nov 2021 07:45:23 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 66
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 gagal, kopi tidak ditemukan!","success":false}

Fokuskan pada kode yang tebal. Lihat status kodenya; kali ini, hasilnya negatif. Karena kopi luwak tidak ditemukan pada daftar kopi, permintaan kita tidak dapat diproses oleh server.

Semoga latihan ini meningkatkan pemahaman kita tentang cara protokol HTTP berinteraksi antara client dan server.

Posting Komentar

0 Komentar