Oleh Ferri Sutanto
Hackathon Merdeka 2.0 Banyumas
Purwokerto, 24 - 25 Oktober 2015
Hi, saya Ferri
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!
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
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
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
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
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 | 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 |
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
Usahakan untuk selalu sertifikat HTTPS sebagai pengaman dasar RESTful API.
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