Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Node.js

Mengkode API Pertama Anda Dengan Node.js dan Exspress: Memahami REST API

by
Difficulty:BeginnerLength:MediumLanguages:
This post is part of a series called Code Your First API With Node.js and Express.
Code Your First API With Node.js and Express: Set Up the Server

Indonesian (Bahasa Indonesia) translation by Dian Sapta Priambogo (you can also view the original English article)

Memahami REST dan RESTful APIs

Jika Anda telah menghabiskan banyak waktu dengan pengembangan web modern, Anda akan menemukan istilah seperti REST dan API. Jika Anda pernah mendengar istilah ini atau bekerja dengan API tetapi tidak memiliki pemahaman lengkap tentang cara kerjanya atau cara membuat API Anda sendiri, seri ini cocok untuk Anda.

Dalam seri tutorial ini, kita akan mulai dengan ikhtisar prinsip dan konsep REST. Kemudian kita akan melanjutkan untuk membuat API lengkap kita sendiri yang berjalan pada server Node.js Express dan terhubung ke database MySQL. Setelah menyelesaikan seri ini, Anda harus merasa yakin membangun API Anda sendiri atau menyelidiki dokumentasi API yang ada.

Prasyarat

Untuk mendapatkan hasil maksimal dari tutorial ini, Anda harus sudah memiliki beberapa pengetahuan dasar command line, tahu dasar-dasar JavaScript, dan Node.js sudah terinstal secara global.

Apa itu REST dan RESTful API?

Representational State Transfer, atau REST, menjelaskan gaya arsitektur untuk layanan web. REST terdiri dari serangkaian standar atau kendala untuk berbagi data antara sistem yang berbeda, dan sistem yang menerapkan REST dikenal sebagai RESTful. REST adalah konsep abstrak, bukan bahasa, framework, atau jenis perangkat lunak.

Analogi longgar untuk REST adalah menyimpan koleksi vinil vs. menggunakan layanan musik streaming. Dengan koleksi vinil fisik, setiap catatan harus digandakan secara keseluruhan untuk dibagikan dan didistribusikan salinannya. Namun, dengan layanan streaming, musik yang sama dapat dibagikan selamanya melalui referensi ke beberapa data seperti judul lagu. Dalam hal ini, streaming musik adalah layanan RESTful, dan koleksi vinil adalah layanan non-RESTful.

API adalah Application Programming Interface, yang merupakan antarmuka yang memungkinkan program perangkat lunak untuk berkomunikasi satu sama lain. RESTful API hanyalah sebuah API yang menganut prinsip-prinsip dan kendala REST. Dalam API Web, server menerima request melalui endpoint URL dan mengirim response sebagai balasannya, yang seringkali berupa data dalam format seperti JSON.

Prinsip REST

Enam batasan panduan mendefinisikan arsitektur REST, yang diuraikan di bawah ini.

  1. Uniform Interface: Antarmuka komponen harus sama. Ini berarti menggunakan standar URI untuk mengidentifikasi sumber daya—dengan kata lain, path yang dapat dimasukkan ke bilah lokasi browser.
  2. Client-Server: Ada pemisahan kekhawatiran antara server, yang menyimpan dan memanipulasi data, dan klien, yang meminta dan menampilkan respon.
  3. Stateless Interactions: Semua informasi tentang setiap permintaan terkandung dalam setiap permintaan individu dan tidak tergantung pada status session.
  4. Cacheable: Klien dan server dapat menyimpan sumber daya.
  5. Layered System: Klien dapat dihubungkan ke server akhir, atau lapisan menengah seperti load-balancer.
  6. Code on Demand (Opsional): Seorang klien dapat mengunduh kode, yang mengurangi visibilitas dari luar.

Request dan Response

Anda sudah terbiasa dengan kenyataan bahwa semua situs web memiliki URL yang dimulai dengan http (atau https untuk versi aman). HyperText Transfer Protocol, atau HTTP, adalah metode komunikasi antara klien dan server di internet.

Kita melihatnya paling jelas di bilah URL browser kita, tetapi HTTP dapat digunakan untuk lebih dari sekadar meminta situs web dari server. Ketika Anda pergi ke URL di web, Anda sebenarnya melakukan permintaan GET pada sumber daya spesifik itu, dan situs web yang Anda lihat adalah badan tanggapan. Kita akan membahas GET dan jenis permintaan lainnya segera.

HTTP berfungsi dengan membuka koneksi TCP (Transmission Control Protocol) ke port server (80 untuk http443 untuk https) untuk membuat permintaan, dan server yang mendengarkan merespon dengan status dan badan.

Permintaan harus terdiri dari URL, metode, informasi tajuk, dan badan.

Metode Request

Ada empat metode HTTP utama, juga disebut sebagai kata kerja HTTP, yang biasanya digunakan untuk berinteraksi dengan API web. Metode-metode ini menentukan tindakan yang akan dilakukan dengan sumber daya apa pun yang diberikan.

Metode request HTTP secara longgar sesuai dengan paradigma CRUD, yang merupakan singkatan dari Create, Update, Read, Delete. Meskipun CRUD mengacu pada fungsi yang digunakan dalam operasi basis data, kita dapat menerapkan prinsip-prinsip desain tersebut ke kata kerja HTTP di RESTful API.

Aksi Metode Request Definisi
Baca GET Mengambil sumber daya
Create POST Menciptakan sumber daya baru
Update PUT Memperbarui sumber daya yang ada
Delete DELETE Menghapus sumber daya

GET adalah operasi yang aman dan read-only yang tidak akan mengubah status server. Setiap kali Anda menekan URL di browser Anda, seperti https://www.google.com, Anda mengirim permintaan GET ke server Google.

POST digunakan untuk membuat sumber daya baru. Contoh POSTyang sudah dikenal adalah mendaftar sebagai pengguna di situs web atau aplikasi. Setelah mengirimkan formulir, permintaan POST dengan data pengguna mungkin dikirim ke server, yang kemudian akan menulis informasi itu ke dalam basis data.

PUT memperbarui sumber daya yang ada, yang dapat digunakan untuk mengedit pengaturan pengguna yang ada. Tidak seperti POSTPUT adalah idempoten, yang berarti panggilan yang sama dapat dibuat beberapa kali tanpa menghasilkan hasil yang berbeda. Misalnya, jika Anda mengirim permintaan POST yang sama untuk membuat pengguna baru dalam database berkali-kali, itu akan membuat pengguna baru dengan data yang sama untuk setiap permintaan yang Anda buat. Namun, menggunakan permintaan PUT yang sama pada pengguna yang sama akan terus menghasilkan hasil yang sama.

DELETE, seperti namanya, cukup akan menghapus sumber daya yang ada.

Kode Respon

Setelah permintaan melewati dari klien ke server, server akan mengirim kembali respon HTTP, yang akan mencakup metadata tentang respon yang dikenal sebagai header, serta badan. Bagian pertama dan terpenting dari respon adalah kode status, yang menunjukkan apakah permintaan berhasil, jika ada kesalahan, atau jika tindakan lain harus diambil.

Kode respon paling terkenal yang Anda kenal adalah 404, yang berarti Not Found404 adalah bagian dari kelas 4xx dari kode status, yang menunjukkan kesalahan klien. Ada lima kelas kode status yang masing-masing berisi serangkaian respon.

  • 1xx: Informasi
  • 2xx: Sukses
  • 3xx: Pengalihan
  • 4xx: Kesalahan Client
  • 5xx: Kesalahan Server

Respons umum lainnya yang mungkin Anda kenal adalah 301 Moved Permanently, yang digunakan untuk mengarahkan situs web ke URL baru, dan 500 Internal Server Error, yang merupakan kesalahan yang sering muncul ketika sesuatu yang tidak terduga terjadi pada server yang membuatnya tidak mungkin untuk memenuhi permintaan yang dimaksud.

Sehubungan dengan RESTful APIs dan kata kerja HTTP yang sesuai, semua respon harus dalam kisaran 2xx.

Request Respon
GET 200 (OK)
POST 201 (Created)
PUT 200 (OK)
DELETE 200 (OK), 202 (Accepted), or 204 (No Content)

200 OK adalah respon yang menunjukkan bahwa permintaan berhasil. Ini digunakan sebagai respon saat mengirim permintaan GET atau PUTPOST akan mengembalikan 201 Created untuk menunjukkan bahwa sumber daya baru telah dibuat, dan DELETE memiliki beberapa respon yang dapat diterima, yang menyampaikan bahwa permintaan telah diterima (202), atau tidak ada konten untuk dikembalikan karena sumber daya sudah tidak ada (204).

Kita dapat menguji kode status permintaan sumber daya menggunakan cURL, yang merupakan tool command-line yang digunakan untuk mentransfer data melalui URL. Menggunakan curl, diikuti oleh tanda -i atau --include, akan mengirimkan permintaan GET ke URL dan menampilkan header dan isi. Kita dapat menguji ini dengan membuka program command-line dan menguji cURL dengan Google.

Server Google akan merespon dengan yang berikut ini.

Seperti yang dapat kita lihat, permintaan curl mengembalikan beberapa header dan seluruh tubuh HTML dari respon-nya. Karena permintaan berjalan dengan sukses, bagian pertama dari respon adalah kode status 200 bersama dengan versi HTTP (baik itu HTTP/1.1 atau HTTP/2).

Karena permintaan khusus ini mengembalikan situs web, content-type(tipe MIME) yang dikembalikan adalah text/html. Di RESTful API, Anda mungkin akan melihat application/json untuk menunjukkan responnya adalah JSON.

Menariknya, kita dapat melihat jenis respon lain dengan memasukkan URL yang sedikit berbeda. Lakukan curl di Google tanpa www.

Google mengalihkan google.com ke www.google.com, dan menggunakan respon 301 untuk menunjukkan bahwa sumber daya harus dialihkan.

Endpoint REST API

Ketika API dibuat di server, data yang dikandungnya dapat diakses melalui endpoint. Endpoint adalah URL dari permintaan yang dapat menerima dan memroses permintaan GETPOSTPUT, atau DELETE.

URL API akan terdiri dari root, path, dan string kueri opsional.

  • Root misalnya https://api.example.com atau https://api.example.com/v2: Root API, yang mungkin terdiri dari protokol, domain, dan versi.
  • Path misalnya /users/atau /users/5: Lokasi unik sumber daya tertentu.
  • Query Parameter (opsional) misalnya ?location=chicago&age=29: Pasangan nilai kunci opsional yang digunakan untuk menyortir, memfilter, dan pagination
    Kita dapat menggabungkan mereka semua untuk mengimplementasikan sesuatu seperti contoh di bawah ini, yang akan mengembalikan daftar semua pengguna dan menggunakan parameter kueri limit untuk memfilter tanggapan untuk menyertakan sepuluh hasil saja.

https://api.example.com/users?limit=10

Secara umum, ketika orang menyebut API sebagai RESTful API, mereka merujuk pada konvensi penamaan yang digunakan untuk membangun endpoint URL API. Beberapa konvensi penting untuk RESTful API standar adalah sebagai berikut:

  • Paths harus jamak: Misalnya, untuk mendapatkan pengguna dengan id dari 5, kita akan menggunakan /users/5, bukan /user/5.
  • Endpoint tidak boleh menampilkan ekstensi file: Meskipun API kemungkinan besar akan mengembalikan JSON, URL tidak boleh diakhiri dengan .json.
  • Endpoint harus menggunakan kata benda, bukan kata kerja: Kata-kata seperti add dan delete tidak boleh muncul di URL REST. Untuk menambah pengguna baru, Anda cukup mengirim permintaan POST ke /users, bukan sesuatu seperti /users/add. API harus dikembangkan untuk menangani beberapa jenis permintaan ke URL yang sama.
  • Path bersifat case sensitive, dan harus ditulis dalam huruf kecil dengan tanda hubung sebagai lawan dari garis bawah.

Semua konvensi ini adalah pedoman, karena tidak ada standar REST yang ketat untuk diikuti. Namun, menggunakan pedoman ini akan membuat API Anda konsisten, akrab, dan mudah dibaca dan dipahami.

Kesimpulan

Dalam artikel ini, kita mempelajari apa itu REST dan RESTful API, bagaimana metode permintaan HTTP dan kode respon bekerja, struktur URL API, dan konvensi RESTful API yang umum. Dalam tutorial berikutnya, kita akan belajar bagaimana menempatkan semua teori ini untuk digunakan dengan menyiapkan server Express dengan Node.js dan membangun API kita sendiri.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.