Tutorial Membuat API Menggunakan AdonisJS – Part 3

Tutorial Membuat API Menggunakan AdonisJS – Part 3

Pada tutorial ini saya akan melanjutkan artikel saya sebelumnya tentang bagaimana cara membuat API menggunakan AdonisJS dengan database MySQL. Pada part kali ini topik yang akan saya bahas adalah cara membuat Controller, Model dan Routing pada AdonisJS.

1.Controller

Ok, untuk membuat controller kita gunakan perintah adonis make:controller <nama-controller>, untuk nama class controllernya sendiri kita namakan Cafe.

$ adonis make:controller Cafe
> Select controller type For HTTP requests
✔ create  app/Controllers/Http/CafeController.js

Baca Juga : Tutorial Membuat API Menggunakan AdonisJS – Part 2

Jika berhasil, maka file CafeController.js akan muncul di folder Controller/Http. Agar Controller dapat bekerja dengan Model, maka kita harus menyertakan model Cafe didalam controller Cafe. Tambahkan kode berikut setelah kode ‘use strict’.

'use strict'

const Cafe = use('App/Models/Cafe');

class CafeController {
  
}

module.exports = CafeController

Pada kode diatas, kita melakukan import model User dan mendeklarasikan model tersebut sebagai variable User. Untuk generate modelnya akan kita bahas nanti. Setelah kita mengimpor model User, sekarang kita membuat method baru didalam controller Cafe, misalnya method store() untuk menyimpan data.

'use strict'

const Cafe = use('App/Models/Cafe');

class CafeController {
  async store({ request, response }) {
      try {

     } catch (err) {
          return response.status(err.status).send(err);
      }
  }
}

module.exports = CafeController;

Agar controller hanya dapat menerima request tertentu saja, kita membutuhkan request.only() yang berfungsi untuk memfilter request yang masuk dan menampungnya kedalam sebuah array.

const data = request.only(['cafe_name', 'cafe_address', 'latitude', 'longitude']);

Pada kode diatas kita akan menampung request cafe_name, cafe_address, latitude dan longitude kedalam array dan mengeksekusi method untuk menyimpan data kedalam database.

async store({ request, response }) {
      try {
          const data = request.only(['cafe_name', 'cafe_address', 'latitude', 'longitude']);
          const user = await User.create(data);
          return user;
      } catch (err) {
          return response.status(err.status).send(err);
      }
  

2. Routing

Setelah membuat controller, sekarang kita akan berpindah sementara ke bagian Routing. Project dari AdonisJS memiliki file route.js yang terletak di folder start. Tambahkan kode berikut pada baris bagian paling bawah

Route.post('cafe', 'CafeController.store');

Penjelasan kode diatas adalah agar kita dapat mengirimkan Request POST ke alamat http://127.0.0.1/3333/cafe. Ketika route cafe dengan request method POST diakses, maka file route akan memanggil method store() yang berada di CafeController. Mudah kan?

3. Model

Setelah selesai dengan Controller dan Routing, sekarang kita beralih ke Model. Setiap nama class pada model yang kita buat akan mempresentasikan table yang akan kita gunakan, misalnya jika kita akan membuat model User maka table yang akan kita gunakan adalah users.

Karena table yang saya buat bernama cafes maka nama class model yang akan saya buat adalah Cafe.

$ adonis make:model Cafe
✔ create  app/Models/Cafe.js

AdonisJS memiki sebuah active record bernama Lucid ORM, fitur didalam Lucid ORM ini mirip dengan active record pada Ruby atau Eloquent ORM pada Laravel sehingga memudahkan kita untuk memanipulasi record pada database.

Baca Juga : Tutorial Membuat API Menggunakan AdonisJS – Part 1

Sekarang kita akan melakukan tes pada controller, model dan route yang sudah kita buat. Untuk melakukan tes request kamu bisa menggunakan Postman atau Insomnia. Kebetulan tools yang saya gunakan adalah Insomnia.

Yang kita lakukan adalah membuat request dengan method POST ke alamat dengan content-type yaitu JSON. Format JSON yang akan kita kirim adalah sebagai berikut :

{
  "cafe_name": "ROEMPI Coffee & Eatery",
  "cafe_address": "Jl. Anggrek No.27, Merdeka, Kec. Sumur Bandung, Kota Bandung, Jawa Barat 40113",
  "latitude": "-6.9130619",
  "longitude": "107.6281316"
}

Jika request yang kita kirim berhasil disimpan didalam database, maka respon yang ditampilkan adalah sebagai berikut :

{
  "cafe_name": "ROEMPI Coffee & Eatery",
  "cafe_address": "Jl. Anggrek No.27, Merdeka, Kec. Sumur Bandung, Kota Bandung, Jawa Barat 40113",
  "latitude": "-6.9130619",
  "longitude": "107.6281316",
  "created_at": "2019-10-15 01:22:24",
  "updated_at": "2019-10-15 01:22:24",
  "id": 1
}

Pada bagian ini kita sudah dapat membuat Controller, Model dan Route pada Rest API menggunakan AdonisJS dan database MySQL. Pada artikel berikutnya saya akan lengkapi dengan CRUD lengkap. Silahkan dicoba dan semoga bermanfaat.

Tinggalkan komentar