Mengenal RESTful API Menggunakan FLASK ~ Part-01

Fahmi Prasetio
4 min readOct 14, 2018

Pada artikel bagian pertama ini saya akan mengenalkan bagian-bagian yang perlu diketahui dan dipahami sebelum teman-teman menggunakan atau mengaplikasikan RESTful API.

Hal terdasar yaitu harus memahami arti RESTful API itu sendiri. Jadi, RESTful API merupakan implementasi dari API (Application Programming Interface). Sedangkan pengertian dari 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 memliki tujuan untuk menjadikan sistem yang memiliki performa yang baik, cepat dan mudah untuk di kembangkan (scale) terutama dalam pertukaran dan komunikasi data. selain itu REST lebih sering digunakan daripada SOAP (Simple Object Access Protocol) karena penggunaan REST lebih mudah dipahami dan diterapkan dalam berbagai platform.

Ada beberapa syarat-syarat dalam arsitektur REST :

  1. Client-Server : Aplikasi pada umumnya dipisahkan berdasarkan client dan server, hal ini dimaksudkan agar pengembangan aplikasi client dan server dapat dlakukan secara terpisah, sehingga lebih fleksibel dan mudah di scale.
  2. Stateless : Server tidak menyimpan segala informasi tentang client, dengan kata lain tidak boleh ada session. Semua informasi tentang client dimiliki oleh client.
  3. Cacheable : Cache diperlukan untuk menghindari akses ke data storage untuk pengambilan informasi yang sama berulang-ulang.
  4. Layered System :Client tidak mengetahui dia terkoneksi ke server yang mana. Hal ini dibutuhkan untuk meningkatkan scalability.
  5. Code On Demand : Server dapat menambahkan/mengurangi fitur client dengan cepat, contohnya dengan cara mentransfer kode javascript/java aplet.

Kemudian, RESTful API sendiri 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 :

/addUser
/addusers/numbers
/addusers/numbers/address
/addusers/numbers/address/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 :

  1. 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
  2. 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
  3. PUT
    PUT adalah metode HTTP Request yang biasanya digunakan untuk melakukan update data resource.
    Contoh :
    PUT /users/1234 : Mengupdate data user dengan ID 1234
  4. 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 4 metode request diatas tersebut adalah yang paling umum 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, 13 Oct 2018 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/1234HTTP/1.1 200 OK
Content-Type: application/vnd.api+json

{
“id”: “1234”,
“name”: “jhon”,
“created”: “2015–05–22T14:56:29.000Z”,
“updated”: “2015–05–22T14:56:29.000Z”
}

Lalu apa itu Flask dan apa kaitannya pada RESTful API?
Flask adalah micro framework dalam bahasa python. Kenapa Flask disebut micro framework? karena tidak membutuhkan alat-alat tertentu atau pustaka. Flask tidak memiliki database abstraction layer, validasi form, atau komponen lain di mana sudah ada pustaka pihak ketiga yang menyediakan fungsi umum. Namun, Flask mendukung ekstensi yang dapat menambahkan fitur aplikasi seolah-olah mereka diimplementasikan dalam Flask itu sendiri. Ekstensi yang ada untuk object-relational mapper, validasi form, penanganan unggahan, berbagai teknologi otentikasi terbuka, dan beberapa alat-lata yang terkait kerangka umum. Ekstensi diperbarui jauh lebih teratur daripada inti program Flask.

Jadi, intinya FLASK yang berfungsi sebagai framework REST kita nanti.

Saya akan memberikan sedikit contoh di artikel part 1 ini. Kode berikut menunjukkan aplikasi web sederhana yang mencetak “Hello World!”:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()

Demikian, sedikit mengenal tentang RESTful API di artikel part-01 ini semoga dapat memberi pemahaman mengenai apa itu RESTful API dan bagaimana konsepnya. kemudian di artikel RESTful selanjutnya Saya akan mengenalkan Step by Step Belajar REST API Menggunakan FLASK. sampai jumpa di artikel berikutnya.

--

--