lifelong learner — urip iku urup, currently working on accenture.

Membuat web services dengan sails(mongodb) – CRUD 5 menit only!

4
Degananda.com -

Sails adalah web framework yang ditulis dengan javascript dan berjalan pada nodejs. Salah satu keunggulan utama dari sails adalah terkait dengan development time. Sails dapat mengenerate endpoint secara cepat. Ulasan ini akan membahas bagaimana membuat web services dengan menggunakan sails dan mongodb.

Pre requisites

tools yang harus dipersiapkan pertama yakni nodejs dan kedua adalah sails itu sendiri. Jika anda belum memiliki sails dan ingin mengetahui proses installasi sails anda dapat melihat ulasan dibawah ini

installasi dan pengenalan sailsJS

selain itu jangan lupa siapkan text editor kesayangan anda. kami menggunakan microsoft visual studio code(VCS) dikarenakan free dan mendapatkan dukungan penuh dari typescript (meski di project ini kita tidak menggunakan typescript melainkan javascript biasa).

Goal

hanya terdapat satu buah goal dari tutorial ini yakni bagaimana cara membuat webservices dengna menggunakan sails dan mongodb. Yang tidak tercover adalah pada bagian validasi dan security. Sehingga web services yang dibuat sangat dasar hanya untuk mengakomodasi CRUD(Create read update dan delete)

What will we build ?

Kita akan membangun webservice dengan konsep REST(REpresentational State Transfer). REST adalah singkatan dari REST stands for REpresentational State Transfer. Merupakan standard dalam arsitektur web yang menggunakan Protocol HTTP untuk pertukaran data.

DUDU(Dari Untuk Dengan Ucapan)

Web services yang akan dibuat berfungsi untuk mengelola DUDU(dari untuk dengan ucapan) yang biasannya diaplikasikan pada suatu kertas dengan fungsi untuk memberikan ucapan kepada seseroang.

DUDU terdiri dari tiga buah object yang menyusunnya yaitu [1] dari -> berarti nama orang/instansi atau nickname (julukan) yang mengirim peasn. [2] untuk -> yaitu penerima pesan tersebut (dapat berisi nama orang/instansi ataupun julukan. dan terahir [3] adalah DU (dengan ucapan) yakni isi dari pesan tersebut. Sehingga model dari database yang akan digunakan juga sangat sederhana yakni model “dudu” dengan tiga buah attribut tersebut.
NB: dalam tutorial ini memang tidak mengakomodasi zona waktu atau kapan dudu tersebut diposting.

Daftar Endpoint

web services ini akan mengakomodasi setidaknya lima kegiatan atau dapat kita katakan sebagai lima endpoint berdasarkan kegiatan-kegiatan apa saja yang dapat dilakukan user nantinnya pada aplikasi (use case).

user dapat memposting dudu dan melihat daftar dudu. Maksut dari melihat daftar dudu ini adalah seperti layaknya timeline pada facebook Seluruh dudu yang pernah diposting ke dalam database akan ditampilkan secara list (tanpa pagging). Intinnya web services akan dibuat sesederhana mungkin karena memang hanya ditujukan untuk mendemonstrasikan pembuatan web services menggunakan Sails. Untuk lebih jelasnya simak daftar endpoint dibawah ini. Berikut ini adalah daftar endpoint pada web services yang akan kita buat.

Endpoint Method Deskripsi
/dudu GET menampilkan seluruh data “DUDU” pada database. aturan

  1. tanpa pagging
/dudu/:id GET menampilkan data dudu berdasarkan id yang ada pada endpoint.

NB : Endpoint ini dapat berguna nantinnya untuk menampilkan detail dari suatu dudu pada saat melakukan edit.

/dudu POST menambahkan data dudu pada database. Request body yang dibutuhkan :

  1. Dari : string
  2. Untuk : string
  3. DU : string
/dudu/:id PUT mengubah data dudu pada database sesuai dengan id pada endpoint.

Request body yang dibutuhkan :

  1. Dari : string
  2. Untuk : string
  3. DU : string
/dudu/:id DELETE Menghapus data dudu yang ada pada database sesuai dengan id pada endpoint.

Teknologi

Teknologi yang akan digunakan untuk membuat RESTful web services tersebut adalah :

  1. NodeJS, karena memang Sails berjalan pada platform nodejs
  2. Sails.
  3. Mongodb. JIka anda tidak familiar dengan mongodb anda dapat menggunakan mysql.
  4. Javascript (jika anda prefer menggunakan typescript silahkan namun pada ulasan ini akan menggunakan javascript karena lebih umum digunakan).
  5. Postman, sebagai client untuk mengakses dan testing endpoint dari browser. Anda juga dapat menggunakan alternatif lain seperti restclient.
  6. Google Chrome

 

Implementasi

Mongodb Database

Seperti yang telah dijelaskan pada bagian “DUDU” diatas bahwa data pada database akan sangat sederhana. Sehingga hanya akan terdapat satu collection yakni “DUDU” dengan tiga buah field. Berikut ini adalah contoh dokumen pada collection dudu yang nantinnya akan dibuat.

_id akan digenerate secara otomatis oleh mongodb. “dari” adalah si pengirim pesan. “untuk” adalah si penerima pesan. “DU” (singkatna dari dengan ucapan) adalah isi dari pesan tersebut. Ketiga field pada collection tersebut memiliki tipe data string. Kecuali _id (ObjectId).

langkah 1 – buat project sails

perintah yang digunakan untuk membuat project sails adalah

sails new "nama_project'.

berikut adalah spesifikasi project sails kami (perbedaan versi dapat menyebabkan konfigurasi yang berbeda).

isi dari package.json (setelah perintah sails new selesai di eksekusi).

{
  "name": "4dudu-ws",
  "private": true,
  "version": "0.0.0",
  "description": "a Sails application",
  "keywords": [],
  "dependencies": {
    "ejs": "2.3.4",
    "grunt": "1.0.1",
    "grunt-contrib-clean": "1.0.0",
    "grunt-contrib-coffee": "1.0.0",
    "grunt-contrib-concat": "1.0.1",
    "grunt-contrib-copy": "1.0.0",
    "grunt-contrib-cssmin": "1.0.1",
    "grunt-contrib-jst": "1.0.0",
    "grunt-contrib-less": "1.3.0",
    "grunt-contrib-uglify": "1.0.1",
    "grunt-contrib-watch": "1.0.0",
    "grunt-sails-linker": "~0.10.1",
    "grunt-sync": "0.5.2",
    "include-all": "^1.0.0",
    "rc": "1.0.1",
    "sails": "~0.12.13",
    "sails-disk": "~0.10.9"
  },
  "scripts": {
    "debug": "node debug app.js",
    "start": "node app.js"
  },
  "main": "app.js",
  "repository": {
    "type": "git",
    "url": "git://github.com/degananda1/4dudu-ws.git"
  },
  "author": "degananda1",
  "license": ""
}

langkah 2 – menjalankan project

perintah yang digunakan untuk menjalankan project adalah

sails lift

langkah 3 – test pada browser

pada terminal akan ditampilkan detail dari server development. Anda dapat mengakses alamat (url) tersebut pada browser akan menampilkan default page dari sails.

buka pada browser

langkah 4 – Install sails mongo

jalankan perintah dibawah ini (anda tidak perlu mematikan server development).

npm install sails-mongo --save

langkah 4.1 – generate api

sails secara default hadir dengan cli(command line interface). Salah satu perintahnya yaitu sails generate api yang mampu membuat API dengan orm. Jalankan perintah dibawah ini

sails generate api dudu

maka secara otomatis akan mengerate file DuduController.js pada folder /api/controller dan Dudu.js pada folder /api/model

langkah 5  – setting /api/model/dudu.js

tentunnya kita ingin membatasi request body yang dikirimkan dari user ke server. Melalui model inilah kita dapat memberikan rule atau aturan-aturannya. Pada kasus ini kita akan membatasi field-field yang boleh masuk ke dalam database sesuai dengan spesifikasi web services kita. untuk post data yang boleh masuk hanya dari, untuk dan du. Maka rulenya adalah sebagai berikut ini.

module.exports = {

  attributes: {
    dari: { type: 'string' },
    untuk: { type: 'string' },
    du: { type: 'string' }
  }
};

untuk dokumentasi lengkap masalah rule di model ini anda dapat melihat dokumentasi sails secara langsung.

langkah 6 – setting /config/connections.js & /config.models.js

uncomment atau hilangkan tanda “//” pada konfigurasi “localMongodb” dan isikan detail server mongodb anda. Jika mongodb tidak menggunakan password ataupun username anda dapat menghapus field username dan passwordnya.

   someMongodbServer: {
     adapter: 'sails-mongo',
     host: 'localhost',
     port: 27017,
     database: 'dudu-api'
   },

kemudian pada config/models.js
kemudian uncomment atau hilangkan tanda “//” pada line “30” yang bertuliskan migrate dan isi valuenya menjadi alter. Alter berarti mengizinkan sails untuk memodifikasi isi dari database. Jangan menggunakan opsi ini ketika berada di server production

  migrate: 'alter',
  schema: true

secara default schema pada mongodb adalah false karena memang mongodb adalah schemeless database. Namun kita akan menggunakan schema true dikarenakan untuk membatasi field yang masuk ke collections “dudu” (hanya boleh dari, untuk dan DU).

langkah 7 – DONE

sudah selesai 😀 tidak sampai lima menit CRUD telah berhasil dibuat. ,Anda tidak percaya ? silahkan buka rest client atau postman anda silahkan arahkan ke endpoint berikut ini

7.1 /dudu -> [POST]

7.2 /dudu -> [GET]

7.3 /dudu/:id -> [GET]

7.4 /dudu/:id -> [PUT]

7.5 /dudu/:id -> [DELETE]

sails secara otomatis mengenerate fungsi-fungsi diatas. Karena secara default sails memiliki tools untuk ORM/ODM yang bernama waterline.

 

 

  • Natanael Wirawan

    Request webservice make graphQL sama firebase with nodejs

    • degananda ferdian

      woke bruh thank you udh berkunjung wkwk

  • Danura Aditya

    sama ya kalo masih pake RDBMS juga sails tuh qwerynya sama aja :v

  • Raditya Mahendra Wirayoga

    kalo bikin web macam Bitfinex gimana gan ?? kan sama bitfinex juga pake nodejs dan mongodb