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,637