/.SMIT NOTE'S

Lorpem ipsum is not a qoute, keep Learn and Share.

REST APIs dengan Slim Micro Framework

Dec. 13th 2017 - 8 min read

Gambar ilustrasi.

Pada kesempatan kali ini saya ingin membahas project saya mengenai REST (Representational State Transfer) API (Application Programming Interface), alasan saya mempelajari REST dan Service adalah karena ingin membuat service untuk aplikasi-aplikasi android saya tentunya, karena menurut saya setiap developer pasti memilki keinginan untuk tidak bergantung pada teknologi penujang lain seperti BaaS (Backend as a Service) atau yang lainnya salah satu BaaS yang populer untuk sekarang adalah Firebase. Sebenarnya firebase cukup powerfull, pada project saya sebelumnya pun yakni Bogani si aplikasi City directory untuk Kota Kotamobagu saya menggunakan Firebase untuk Backendnya namun saya memiliki beberapa kendala untuk mengambil data, contohnya adalah pada saat pencarian data (ini terjadi beberapa tahun lalu, sekarang mungkin sudah lebih mudah digunakan). pada kesempatan ini saya tidak akan membahas mengenai firebase secara lebih dalam namun jika anda ingin mengetahui apa itu firebase anda bisa menuju ke laman resminya firebase.

Pada project rest api ini saya menggunakan Slim Micro Framework dengan megacu pada Dasar dari Desain REST API itu sendri dasar-dasar disini akan saya jabarkan sesuai dari beberapa artikel dan buku yang pernah saya baca.

-Metode HTTP 

Dari beberapa artikel dan buku yang saya baca API yang dirancang dengan baik haruslah mendukung metode HTTP, dan yang paling umum digunakan yakni :

  • GET (digunakan untuk mengambil data)
  • POST (digunakan untuk membuat data baru)
  • PUT (digunakan untuk mengupdate data yang sudah ada)
  • DELETE (digunakan untuk menghapus data)

Keempat metode HTTP diatas merupakan metode yang paling umum digunakan untuk API service, sebenarnya ada lagi selain keempat metode diatas salah satunya OPTION (digunakan digunakan untuk mendapat operasi yang didukung) namun 4 metode pada list diatas yang sering digunakan.

-Kode Status HTTP atau Kode Respon HTTP

Kode status atau kode respon dari HTTP digunakan untuk memberitahukan klien tindakan apa yang harus diambil. Server haruslah membalas dengan kode respon HTTP dengan tepat, dengan demikian klien dapat mencoba untuk memperbaiki kesalahannya, dengan asumsi ada kesalahan. Kebanyakan orang akrab dengan kode respon umum seperti 404 Not Found, namun, ada lebih banyak respon yang tersedia untuk menyesuaikan di berbagai macam situasi. Berikut adalah beberapa kode respon HTTP, yang sering digunakan ketika menggunakan REST:

  • 200 - OK (Respon ini menunjukkan bahwa permintaan berhasil dibuat)
  • 201 - Created (Respon ini menunjukkan permintaan berhasil dibuat. biasanya digunakan untuk mengkonfirmasi keberhasilan suatu PUT atau permintaan POST)
  • 400 - Bad Request (Permintaan jelek. Hal ini terjadi terutama dengan POST dan permintaan PUT, ketika data tidak lulus validasi, atau dalam format yang salah)
  • 401 - Unauthorized (Kesalahan ini menunjukkan bahwa Anda perlu melakukan otentikasi sebelum mengakses sumber daya)
  • 403 - Forbidden (Akses Tidak bisa diberikan)
  • 404Not Found (Respon ini menunjukkan bahwa data yang diperlukan tidak dapat ditemukan)
  • 422 - Unprocessable Entity (Permintaan Klien tidak dapat diprores karena adanya kesalahan semantik)
  • 500 - Internal Server Error ( umumnya digunakan ketika memproses kegagalan karena keadaan yang tak terduga pada sisi server)

 

-Struktur URL dan Versi API

Untuk Pemberian versi pada API sendiri dari diskusi yang ada pada laman stackoverflow dapat menggunakan URL maupun header pada permitaan HTTP namun yang disarankan pemberian versi dilakukan pada header request. Saya sendiri cenderung lebih tertarik menggunakannya pada bagian URL hal ini selain memperjelas juga mempercantik url tentunya.

Struktur URL sendiri jikalau mengikuti desain yang disarankan untuk Pengembangan Web API haruslah mudah dimengerti dan haruslah unik, juga sangat disarankan ketika kita menggunakan sebuah Kode API atau Token alangkah baiknya disimpan didalam Header HTTP Request dan bukan pada URL

URL dan pemberian versi yang saya gunakan untuk project ini 

base_url/nama_api/api/versi/nama_kontroler/fungsi

 keterangan :

  • base_url merupakan url dari web kita (https://example.id)
  • nama_api bebas bisa kita namakan
  • api opsional saya tambahkan biar memperjelas
  • versi pemberian versi untuk API yang dibangun
  • nama_kontroler memperjelas lokasi dari request kita 
  • fungsi nama dari fungsi yang akan kita pakai

 

- REST API dengan SLIM

Masuk kembali ke topik utama yakni REST API dengan slim untuk mengunduh project yang telah saya buat sebelumnya dapat mengklik judul diatas anda akan langsung diarahkan menuju link Github tempat dimana saya mengupload file-file project tersebut.

Alasan saya sendiri lebih memilih menggunakan Slim selain karna ingin belajar dan memperdalam mengenai Bahasa PHP dan Frameworknya adalah dikarenakan Slim cukup cepat, ringan dan mudah dimengerti bahkah oleh pemula saklipun. Selain itu, Slim mendukung semua metode HTTP yang diperlukan untuk REST API dan Slim juga menyediakan arsitektur lapisan penengah yang bisa kita sebut dengan nama Middleware yang nantinya akan sangat berguna untuk menyaring permintaan client.

Pada project sederhana yang menjadi topik adalah bagian pengguna yakni Login, Register dan Reset Password dan ada tambahan seperti CRUD data. Berikut adalah daftar Request API yang telah dibuat :

  • base_url/api/v1/auth/singup - menggunakan metode POST memerlukan parameter (nama, email, dan password)
  • base_url/api/v1/auth/singin - menggunakan metode POST memerlukan parameter (email dan password)
  • base_url/api/v1/auth/password/change - menggunakan metode POST memerlukan parameter (password lama dan password baru) dan user haruslah login terlebih dulu

API contoh tambahan 

  • base_url/example/api/v1/datas - menggunakan metode GET, menampilkan semua data pada tabel rest_crud
  • base_url/example/api/v1/data/{id} - menggunakan metode GET, memerlukan tambahan pada URL yakni id, menampilkan data berdasarkan request id
  • base_url/example/api/v1/create/data - menggunakan metode POST, memerlukan parameter (data)
  • base_url/example/api/v1/update/data - menggunakan metode POST, memerlukan parameter (id dan data)
  • base_url//example/api/v1/delete/data/{id} - menggunakan metode POST, memerlukan tambahan pada URL yakni id, menghapus data berdasarkan request id

Pada databasenya sendiri saya memiliki 5 buah database dapat dilihat pada Link Kode Berikut database tersebut yakni

  • User (untuk menyimpan sensitif)
  • group (menyimpan data group)
  • User_detail  (untuk menyimpan public)
  • User_group (menyipan data group dari user, tabel ini berhubungan 'FK' dengan id- tabel user dan id-tabel group) 
  • rest_crud (tempat api contoh tambahan)

Project ini saya menggunakan Model MVC (Model View Controller) dikarenakan kedepannya project ini tidak hanya digunakan sebagai penyedia service api saja namun lebih dari itu. Selain itu, pada project ini saya menggunakan Eloquent ORM (Object Relation Maping)  alasan saya menggunakan Eloquent karena mempermudah kita bekerja dengan database dan saya juga menyertakan librari powerful untuk validasi yakni Validate yang dikembangkan oleh tim Respect.

-Pustaka

 

Share :