Mengenal REST API & Cara Kerja HTTP
Memahami request, response, method, dan status code HTTP, lalu menulis handler Go pertamamu.
Apa itu API?
API (Application Programming Interface) adalah "pintu" yang dipakai program lain untuk meminta data atau menyuruh aplikasimu bekerja. Contoh: aplikasi cuaca di HP-mu tidak menyimpan data cuaca sendiri; ia bertanya ke sebuah API di internet, lalu menampilkan jawabannya.
Apa itu REST?
REST API adalah API yang berbicara lewat protokol HTTP (protokol yang sama dengan yang dipakai browser) dan mengikuti aturan sederhana: setiap data dianggap sebagai resource (sumber daya) yang punya alamat (URL), dan kita memakai method HTTP untuk menyatakan apa yang ingin dilakukan.
Di kursus ini kita membangun API untuk daftar tugas (todo) dari nol. Resource-nya adalah todos:
| Method | Alamat | Artinya |
|---|---|---|
GET | /todos | Ambil semua todo |
GET | /todos/3 | Ambil todo nomor 3 |
POST | /todos | Buat todo baru |
PUT | /todos/3 | Ubah todo nomor 3 |
DELETE | /todos/3 | Hapus todo nomor 3 |
Request dan Response
Semua komunikasi HTTP berupa pasangan request (permintaan dari client) dan response (jawaban dari server).
REQUEST RESPONSE
POST /todos HTTP/1.1 HTTP/1.1 201 Created
Content-Type: application/json Content-Type: application/json
{"title":"Belajar Go"} {"id":1,"title":"Belajar Go","done":false}
└ method + alamat └ status code
└ header └ header
└ body (isi) └ body (isi)
Status code yang wajib kamu hafal
| Kode | Arti | Dipakai saat… |
|---|---|---|
200 OK | Berhasil | GET, PUT berhasil |
201 Created | Data baru dibuat | POST berhasil |
204 No Content | Berhasil, tanpa isi | DELETE berhasil |
400 Bad Request | Permintaan salah format | JSON rusak |
404 Not Found | Tidak ditemukan | ID tidak ada |
500 Internal Server Error | Server bermasalah | Bug di kode kita |
Handler: jantung API di Go
Go sudah menyediakan server HTTP di paket bawaan net/http, jadi kita tidak perlu framework. Satu permintaan ditangani oleh satu fungsi yang disebut handler, dengan bentuk yang selalu sama:
func Ping(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "pong")
}
r *http.Request— permintaan yang masuk (method, alamat, header, body). Kita membaca dari sini.w http.ResponseWriter— "kertas jawaban". Apa pun yang kita tulis kewakan dikirim sebagai isi response. Kita menulis ke sini.fmt.Fprint(w, "pong")— sama sepertifmt.Println, tetapi tulisannya masuk kew(bukan ke layar). Jika kita tidak menentukan status code, Go otomatis memakai 200 OK.
Cara berlatih di KelasIT
Server sungguhan perlu membuka port di komputermu, sedangkan kotak latihan di sini hanya menjalankan program lalu menampilkan output. Karena itu kita memakai paket net/http/httptest untuk menyimulasikan permintaan: httptest.NewRequest membuat request palsu, httptest.NewRecorder menampung jawabannya. Handler-mu bekerja persis sama seperti di server sungguhan. Bagian itu sudah disediakan di bawah garis "JANGAN diubah"; tugasmu hanya mengisi bagian yang ditandai ISI.