Pengertian REST API (Part 1)

November 06, 2018 by

Hai teman-teman se-bangsa dan se-technology, pada kesempatan kali ini saya akan memperkenalkan apa itu RESTful API.RESTful API / REST API merupakan implementasi dari API (Application Programming Interface). REST (Representional State Transfer) adalah suatu arsitektur metode komunikasi yang menggunakan protokol HTTP untuk pertukaran data dan metode ini sering diterapkan dalam pengembangan aplikasi. Dimana tujuannya adalah untuk menjadikan sistem yang memiliki performa yang baik, cepat dan mudah untuk di kembangkan (scale) terutama dalam pertukaran dan komunikasi data.
RESTful API memiliki 4 komponen penting di dalamnya diantaranya adalah
  • URL Design
  • HTTP Verbs
  • HTTP Response Code
  • Format Response
URL Design
RESTful API diakses menggunakan protokol HTTP. Penamaan dan struktur URL yang konsisten akan menghasilkan API yang baik dan mudah untuk dimengerti developer. URL API biasa disebut endpoint dalam pemanggilannya. Contoh penamaan URL / endpoint yang baik adalah seperti berikut :
/users
/users/1234
/users/1234/photos
/users/1234/photos/abc
HTTP Verbs
Setiap request yang dilakukan terdapat metode yang dipakai agar server mengerti apa yang sedang di request client, diantaranya yang umum dipakai adalah :
GET
GET adalah metode HTTP Request yang paling simpel, metode ini digunakan untuk membaca atau mendapatkan data dari sumber.
Contoh :
GET /users : Mengembalikan daftar user
GET /users/1234 : Mengembalikan data user dengan ID 1234
POST
POST adalah metode HTTP Request yang digunakan untuk membuat data baru dengan menyisipkan data dalam body saat request dilakukan.
Contoh :
POST /users : Membuat data user baru
PUT
PUT adalah metode HTTP Request yang biasanya digunakan untuk melakukan update data resource.
Contoh :
PUT /users/1234 : Mengupdate data user dengan ID 1234
DELETE
DELETE adalah metode HTTP Request yang digunakan untuk menghapus suatu data pada resource.
Contoh :
DELETE /users/1234 : Menghapus data user dengan ID 1234
Selain HTTP Verbs diatas, masih ada metode HEAD dan PATCH dalam HTTP Request, tetapi jarang sekali digunakan.
HTTP Response Code
HTTP response code adalah kode standarisasi dalam menginformasikan hasil request kepada client. Secara umum terdapat 3 kelompok yang biasa kita jumpai pada RESTful API yaitu :
  • 2XX : adalah response code yang menampilkan bahwa request berhasil.
  • 4XX : adalah response code yang menampilkan bahwa request mengalami kesalahan pada sisi client.
5XX : adalah response code yang menampilkan bahwa request mengalami kesalahan pada sisi server.
Dan berikut ini adalah response code yang biasa digunakan pada REST :
200 OK
Response code ini menandakan bahwa request yang dilakukan berhasil.
201 Created
Response code ini menandakan bahwa request yang dilakukan berhasil dan data telah dibuat. Kode ini digunakan untuk mengkonfirmasi berhasilnya request PUT atau POST.
400 Bad Request
Response code ini menandakan bahwa request yang dibuat salah atau data yang dikirim tidak ada.
401 Unauthorized
Response code ini menandakan bahwa request yang dibuat membutuhkan authentication sebelum mengakses resource.
404 Not Found
Response Code ini menandakan bahwa resource yang di dipanggil tidak ditemukan.
405 Method Not Allowed
Response code ini menandakan bahwa request endpoint ada tetapi metode HTTP yang digunakan tidak diizinkan.
409 Conflict
Response code ini menandakan bahwa request yang dibuat terdapat duplikasi, biasanya informasi yang dikirim sudah ada sebelumnya.
500 Internal Server Error
Response code ini menandakan bahwa request yang dilakukan terdapat kesalahan pada sisi server atau resource.
Format Response
Setiap request yang dilakukan client akan menerima data response dari server, response tersebut biasanya berupa data XML ataupun JSON. Setelah mendapatkan data response tersebut barulah client bisa menggunakannya dengan cara memparsing data tersebut dan diolah sesuai kebutuhan.
Contoh :
XML
HTTP/1.1 200 OK
Date: Sat, 06 Oct 2001 23:20:04 GMT
Server: Apache.1.3.12 (Unix)
Connection: close
Content-Type: text/xml
Content-Length: 124
<?xml version=”1.0″?>
<methodResponse>
<params>
<param>
<value><double>18.24668429131</double></value>
</param>
</params>
</methodResponse>
JSON
GET /users/1234
HTTP/1.1 200 OK
Content-Type: application/vnd.api+json
{
“id”: “1234”,
“first_name”: “jhon”,
“last_name”: “doe”,
“created”: “2015-05-22T14:56:29.000Z”,
“updated”: “2015-05-22T14:56:29.000Z”
}

Menurut saya API itu solusi dari bagaimana cara aplikasi/program saling berkomunikasi, tidak tergantung bahasa program dan tidak tergantung dengan device yang digunakan.
Misal ada PC bisa ngomong sama HP, ada web pakai PHP bisa ngobrol sama bahasa web Ruby. Jadi API ini kita harus melihat dari 2 sisi: 
1. Dari yang pembuat API 
Misalnya mendevelop 1 API, terserah dari pembuatnya tentang apa yang boleh dilakukan sama APInya. Misal pakai methode standar : GET (mendapat data), POST(mengirim data), PUT/PATCH(mengedit data), DELETE(menghapus data). Nah apa yang bisa diedit, dihapus, dan gmn caranya dan fungsinya itu terserah pembuat API

2. Dari User/ Konsumen API => harus mengikuti metode-metode /url (istilahnya endpoint) yang sudah dibuat oleh developernya. Jadi kita (user) tidak boleh kreatif dalam melakukan request-request/ saat menggunakan APInya, semua harus dilihat dokumentasinya, harus persis seperti yang dibuat developer API.

Cara kerja API simple 

Clients ==request ke=> Server kemudian Server ==response ke=>Client sesuai data yang diminta.

Instagram.com/developer/endpoints/users

Endpoint adalah url yang akan kita akases ketika mau menggunakan APInya. url-url/ endpoint ditentukan oleh developer pembuat API misalnya mau mendapatkan info dari instagram kita, nah instagram sudah bikin API untuk mengakses data kita sendiri dengan url /users/self diimplementasikan ke dalam

https://api.instagram.com/v1/users/self/?access_token=ACCESS-TOKEN  

nah yang berbeda nanti nilai dari access_token yaitu ACCESS-TOKEN. Jadi daftar ke instagram terus dapat akses token, nah yang berbeda yaitu akses tokennya sehingga jika ingin mengganti dengan metode-metode lain hanya mengganti /users/self akan tetapi dengan akses token yang sama pada awal daftar untuk 1 pengguna api dari instagram. 

Jadi setiap aplikasi punya cara masing-masing atau pakai public atau access_token terserah pembuat API.
API sendiri ada SOAP dan ada juga REST, yang sekarang populer adalah REST  dengan format data JSON (Javascript Object Notation). JSON adalah suatu format ringkas pertukaran data komputer. Formatnya berbasis teks dan terbaca-manusia serta digunakan untuk merepresentasikan struktur data sederhana dan larik asosiatif (array associative).

Jadi ketika kita sudah bisa masuk ke url dengan token nanti bisa mengambil data id, username, dll yang kita butuhkan bisa diambil dari response server ke client. Jadi diakses lewat JSON kita sudah bisa mengambil datanya setelah kita berhasil melakukan 
request. 

Contoh lain yaitu Google Maps API.
+ Login with FB and Login with Google plus dimana yang buat API login yaitu FB dan 
google. Nah Stackoverflow mengakses API dari fb dan G+ dan diimplementasikan di website dia, jadi walaupun FB nanti pakai PHP dan misal stackoverflow pakai .NET nanti bakal dapat response data JSON. Intinya data yang diakses tidak tergatung pada bahasa apapun juga nah response pasti berbeda tiap aplikasi harus dilihat dari masing-masing dokumentasinya.

0 comments:

Post a Comment