Mengenal RESTful API
Oleh Ferri Sutanto
Hackathon Merdeka 2.0 Banyumas
Purwokerto, 24 - 25 Oktober 2015
Hi, saya Ferri
- Software Developer
- Web Consultant
- Freelance
- ...
- ...
- Hire me!
Apa Itu API?
API adalah singkatan dari Application Programming Interface.
Merupakan suatu "penghubung" yang memungkinkan suatu aplikasi untuk berinteraksi dengan aplikasi lainnya dan berbagi data
https://en.wikipedia.org/wiki/Application_programming_interface
PHP
Java
Go
ASP
etc ..
API solusinya!
API == RESTful API?
RESTful API merupakan implementasi dari API
REST adalah singkatan dari Representational State Transfer yaitu suatu software arsitektur yang berjalan dengan teknologi WWW
Diperkenalkan dan didefinisikan oleh Roy Fielding pada tahun 2000 dalam desertasinya.
http://en.wikipedia.org/wiki/REST

Komponen RESTful API
Desain URL
RESTful API diakses menggunakan teknologi WWW. Oleh karena itu penamaan dan struktur URL yang konsisten akan menghasilkan API yang baik.
/users
/users/some-uuid
/users/photos
/users/photos/some-uuid-of-photo
HTTP Verbs
Metode pemanggilan url yang umum adalah GET dan POST, tetapi di dalam RESTful API kita akan menggunakan yang lain seperti PUT dan DELETE. Ada lagi seperti HEAD dan PATCH, tapi sangat jarang digunakan.
GET /users // return collections
GET /users/uuid // return single user with specific uuid
POST /users // create new user
PUT /users/uuid // edit user with specific uuid
DELETE /users/uuid // delete user with specific uuid
HTTP Status Code
Setiap pemanggilan yang menggunakan teknologi WWW akan mendapatkan status code yang berbeda.
Secara umum terdapat 3 kelompok yang biasa kita jumpai pada RESTful API.
2xx : Permintaan sukses!
4xx : Opps, terdapat kesalahan pada sisi client
5xx : Opps, terdapat kesalahan pada sisi server
Format Response
Pada awalnya penggunaan XML sebagai output dari RESTful sangatlah popular, hingga tahun 2011 menunjukkan trend menurun yang sangat drastis!

Sekarang penggunaan JSON sebagai format output yang standard sangat populer.
GET /articles
HTTP/1.1 200 OK
Content-Type: application/vnd.api+json
{
"data": [{
"type": "articles",
"id": "1",
"attributes": {
"title": "JSON API paints my bikeshed!",
"body": "The shortest article. Ever.",
"created": "2015-05-22T14:56:29.000Z",
"updated": "2015-05-22T14:56:28.000Z"
}
}]
}
JSON vs XML
JSON | XML |
---|---|
Mudah di urai, bahkan oleh javascript pada sisi client, hanya object biasa | Butuh XML Document untuk mengurai seperti Xpath |
Data transport lebih kecil | Data transport lebih besar |
Proses urai lebih cepat | Proses urai lebih lambat |
Versioning
Dalam membangun RESTful API yang baik, kita harus selalu mencantumkan versi aplikasi.
Hal ini berguna agar pengguna tetap dapat menggunakan API ketika kita sedang membangun API yang baru.
Versioning via URL
GET https://api.twitter.com/1.1/trends/place.json?id=1
Versioning via Accept Header
HEADER Accept: {type}/vnd.{company}.{version}+{type}
HEADER Accept: application/vnd.github.v3+json
Versioning via Custom Header
HEADER x-ms-version: 2015-10-24
HEADER api-version: 2
Security
Encryption
Usahakan untuk selalu sertifikat HTTPS sebagai pengaman dasar RESTful API.

Authentication
Jangan encode credential pada URL, tapi letakkan pada HTTP Header
GET /test.txt HTTP/1.1
Host: examplebucket.s3.amazonaws.com
x-amz-date:20130524T000000Z
Authorization: f0e8bdb87c964420e857bd35b5d6ed310bd44f0170aba48dd91039c6036bdb41
Contoh Library
- PHP
- https://github.com/guzzle/guzzle
- https://github.com/kriswallsmith/buzz
- Javascript
- https://github.com/mgonto/restangular
- https://github.com/marmelab/restful.js
- NodeJS
- https://github.com/danwrong/restler
Pelajari Lebih Dalam!
- http://jsonapi.org/
- https://github.com/interagent/http-api-design
- https://github.com/marmelab/awesome-rest
- https://github.com/Kikobeats/awesome-api
Mengenal RESTful API
By Ferri Sutanto
Mengenal RESTful API
Oleh Ferri Sutanto (Hackathon Merdeka 2.0 Banyumas, 24 - 25 Oktober 2015)
- 7,831