Membangun Rest API Sederhana dengan Symfony + API Platform
Hai, terima kasih telah berkunjung. Dipenghujung tahun 2018 saya mempunyai kesempatan untuk belajar salah satu tool yang populer dikalangan pengguna framework symfony yaitu API Platform.
Sederhananya API Platform merupakan sebuah tool yang dibuat untuk memudahkan dalam membuat REST API dengan fitur yang ditawarkan, diantaranya:
- Automatic CRUD
- Pagination
- Filtering and Ordering
- Advanced authentication and authorization rules, dan lainnya.
Jadi kali ini kita akan bahas Automatic CRUD, nah sesuai namanya fitur ini membantu kita dalam membuat operasi crud. Jadi kita punya satu Entity misalnya Book
maka dengan fitur ini, kamu sudah bisa melakukan CRUD tanpa membuat masing-masing action di controller.
Pertama kita akan buat satu project symfony dengan perintah
composer create-project symfony/skeleton belajar-api-platform
Jika project berhasil dibuat maka kita tambahkan beberapa dependency yaitu api-platform, dan maker bundle, dengan mengeksekusi perintah berikut:
composer require api orm
composer require maker server --dev
Untuk melakukan pengujian apakah instalasi berhasil, jalankan perintah:
bin/console server:run
dan akses http://localhost:8000/api, maka kamu akan mendapatkan tampilan seperti berikut :
Selanjutnya yang kita lakukan adalah melakukan konfigurasi basis data. Lewati langkah ini jika sebelumnya sudah pernah melakukan konfigurasi database. Pastikan DATABASE_URL
di file .env
sudah benar, sebagai contoh saya akan menggunakan sqlite sebagai database dengan konfigurasi sebagai berikut :
DATABASE_URL=sqlite:///%kernel.project_dir%/var/data.db
Berikutnya adalah membuat entity Book
dengan perintah:
bin/console make:entity Book
Lalu tambahkan column yang dibutuhkan sesuai dengan rancangan entity di atas,
Setelah selesai maka buka file src/Entity/Book.php
lalu tambahkan anotasi @ApiResource
seperti contoh dibawah :
<?phpnamespace App\Entity;use ApiPlatform\Core\Annotation\ApiResource;
use Doctrine\ORM\Mapping as ORM;/**
* @ApiResource
* @ORM\Entity(repositoryClass="App\Repository\BookRepository")
*/
class Book
{
Untuk penambahan anotasi @ApiResource
bisa dilewati dengan menambahkan opsi --api-resource
pada saat pembuatan entity.
Jika sudah maka akses kembali url http://localhost:8000/api
, kamu akan melihat bahwa CRUD untuk entity Book sudah dibuat seperti gambar di bawah ini :
Pada tahap ini kita sudah bisa memakai beberapa endpoint yang dibuat otomatis oleh Api Platform untuk entity Book. Kamu bisa langsung uji coba di halaman tersebut .
Dan jika kamu perhatikan dari awal hingga pada tahap ini, kita cuman install dan tambahkan beberapa baris kode saja. Nah inilah salah satu fitur api platform, jadi untuk urusan CRUD biasa sudah ditangani olehnya, jadi bisa hemat waktu juga kan? hehe. Nah sekarang kita akan uji langsung api yang sudah dibuat dengan Swagger yang telah dibuat otomatis oleh api platform.
Sebelum melakukan uji coba, maka kita harus buat dulu database, dan juga schema tabelnya, dengan perintah berikut:
bin/console doctrine:database:create
bin/console doctrine:schema:update --force
Pertama kita akan coba CREATE data book, klik pada bagian POST
di endpoint /api/books
, lalu klik tombol Try it out. Lalu isi title, dan author nya seperti gambar dibawah, jika sudah maka tekan tombol execute di bagian bawahnya:
Lalu kita akan READ data buku tersebut, nah kita akan lihat koleksi data buku. Caranya tinggal klik pada bagian GET
dengan endpoint api/books
, lalu klik execute maka responsenya adalah koleksi data dari buku. Pada bagian ini juga api platform mendukung soal paginasi, jadi pada saat kamu mengambil koleksi data buku, kamu akan diminta untuk mengisi page number, walaupun ini tidak wajib diisi.
Ataupun kamu mau ambil data buku berdasarkan id
, bisa dilihat di bagian method GET
dengan endpoint api/books/{id}
di bagian ini kamu wajib mengisi id yang ingin ditampilkan. Biasanya endpoint ini digunakan untuk melihat detail dari suatu data.
Selanjutnya adalah UPDATE, pada bagian ini kita di minta untuk mengisi id
dari data yang ingin diupdate, lalu isi perubahan datanya. dan execute, maka data perubahan tersebut akan disimpan.
Dan terakhir kita akan DELETE datanya, pada bagian ini juga kita diwajibkan untuk mengisi id dari data yang ingin kita hapus.
Sekian untuk pengenalan singkat api platform, saya butuh saran dan kiritik dari teman-teman pembaca untuk lebih baik lagi, baik dari sisi penulisan, istilah dan lainnya. Terima kasih ^_^.
Yuk!, gabung di group Telegram Symfony Indonesia, https://t.me/symfonyid
Referensi :
Thanks buat mas Indra Gunawan yang sudah mereview tulisan ini.