POST adalah metoda yang digunakan untuk mengirim data dari client ke server. Data yang dikirim dalam format JSON.
Pada sisi server, data akan berada dalam request object. Agar express.js bisa mengakses data tersebut, perlu menambahkan middleware.
Middleware adalah suatu fungsi yang berada diantara object request dan response yang berguna untuk melakukan tugas tertentu. Topik ini akan dibahas lebih mendalam di modul terpisah.
File yang diunakan masih file app.js, berikut isi lengkapnya
const fs = require('fs'); const express = require('express'); const app = express(); //code yang ditambahkan pada modul Membuat Route POST app.use(express.json()); const tours = JSON.parse(fs.readFileSync(`${__dirname}/devdata/tours-simple.json`)); app.get('/api/v1/tours', (req, res) => { res.status(200).json({ status: 'success', results: tours.length , data: { tours: tours } }); }); //code yang ditambahkan pada modul Membuat Route POST app.post('/api/v1/tours', (req, res) => { const newId = tours[tours.length-1].id + 1; const newTour = Object.assign({id: newId}, req.body); tours.push(newTour); fs.writeFile(`${__dirname}/devdata/tours-simple.json`, JSON.stringify(tours), err=>{ res.status(201).json({ status: 'success', data: { tour: newTour } }); }); }); // end const port = 3000; app.listen(port, ()=>{ console.log(`Listening on port ${port}...`); });
Pembahasan Code
app.use(express.json());
Fungsi use(express.json()) untuk memberitahu express untuk menggunakan middleware JSON. Middleware JSON ini adalah middleware builtin dari express, berfungsi untuk memparsing data JSON pada request object body.
app.post('/api/v1/tours', (req, res) => {
const newId = tours[tours.length-1].id + 1;
const newTour = Object.assign({id: newId}, req.body);
tours.push(newTour);
fs.writeFile(`${__dirname}/devdata/tours-simple.json`, JSON.stringify(tours), err=>{
res.status(201).json({
status: 'success',
data: {
tour: newTour
}
});
});
});
app.post adalah fungsi untuk menangani method POST, route yang digunakan adalah api/v1/tours.
Untuk tutorial ini, data masih berupa file json, pada live application tentu akan digunakan database. Penggunaan database akan dibuat pada course lain. Untuk course ini, lebih menjelaskan ke penggunaan routing dengan express.
Code constNewId adalah kode sederhana untuk membuat id baru dengan membaca id terakhir dari data yang ada kemudian ditambahkan 1.
Lalu buat object newTour baru dengan isi id dan req.body. req.body adalah data yang dikirim dari client. Kemudian tambahkan newTour ke data tours. Setelah itu simpan kedalam file.
Perhatikan, karena block post ini bisa diakses oleh banyak user dan berulang, maka digunakan metoda writeFile, bukan writeFileAsync untuk mencegah blocking.
Bila penulisan file berhasil, maka response object dikembalikan dengan code 201, yaitu code untuk Created dengan data json.
const newId = tours[tours.length-1].id + 1;
const newTour = Object.assign({id: newId}, req.body);
tours.push(newTour);
fs.writeFile(`${__dirname}/devdata/tours-simple.json`, JSON.stringify(tours), err=>{
res.status(201).json({
status: 'success',
data: {
tour: newTour
}
});
});
Testing API Melalui Postman

Pilih Method POST, lalu isi alamat dengan 127.0.0.1:3000/api/v1/tours. Pilih tab Body, lalu isi dengan data JSON
{ "name" : "Test Tour 1", "duration" : 10, "difficulty" : "easy", "rating": 4.7, "price": 100 }
Setelah itu tekan button Send. Bila program tidak ada error maka dapat dilihat pada panel Body dibawah, response dari program diatas.
Anda bisa cek juga file json, apakah data sudah ditambahkan kedalam file. BIla berhasil, maka ada entry data seperti berikut diakhir file.
{"id":9,"name":"Test Tour 1","duration":10,"difficulty":"easy","rating":4.7,"price":100}
TIPS: Jangan lupa untuk menjalankan aplikasi dengan perintah npm start atau node app.js