Node JS: Membuat REST API Dengan Mudah Menggunakan Node JS Express

Node JS: Membuat REST API Dengan Mudah Menggunakan Node JS Express

Sobatcoding.com - Tutorial membuat REST API menggunakan Node JS Express

Artikel kali ini kita akan coba membuat REST API yang sebelumnya kita menggunakan Laravel, kali ini kita akan coba membuat API menggunakan Node JS. Cara install dan developnya sangat mudah. berikut kita langsung coba saja untuk membuat API CRUD sederhana menggunakan node js.

 

Buat Project Baru

Buat sebuah project baru, misalkan kita buat sebuah folder baru bernama api. Kemudian buatlah sebuah file bernama index.js. Masuk ke folder api kemudian jalankan perintah berikut untuk init node js pertama kali.

npm init

Kemudian isi form yang disediakan sampai selesai, kemudian ketik yes setelah semua berhasil diisi.

 

Install Dependecies

Kita install dahulu beberapa dependecies yang diperlukan seperti express, mysql2. Cara install sangat mudah dengan cara masukkan kode berikut.

npm install --save express mysql2

Setelah berhasil install dependecies di atas masukkan kode berikut di dalam file index.js

const express = require("express");
const app = express();
const port = 8080; //port yang digunakan untuk API bisa diganti sesuai kebutuhan

app.use(express.json());
app.use(
  express.urlencoded({
    extended: true,
  })
);

app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`);
});

app.get("/", (req, res) => {
    res.json({ message: "API Node JS" });
});

Untuk test apakah kode di atas bisa dijalankan, kita gunakan command sebagai berikut.

node index.js

Kemudian akes alamat URL http://localhost:8080

 

Buat Koneksi Database

Buat sebuah file bernama database.js simpan di dalam folder config untuk configurasi database. Masukkan kode sebagai berikut.

module.exports = {
    host: 'localhost',
    user: 'root',
    database: 'db_sc',
    waitForConnections: true,
    connectionLimit: 10,
    queueLimit: 0
};

Untuk setting koneksi database bisa kalian sesuaikan dengan database kalian masing-masing.

Buat sebuah file bernama connect.js simpan di dalam folder config untuk koneksi ke database.

const mysql = require('mysql2');
const configDb = require('./database');
const pool = mysql.createPool(configDb);

module.exports = pool;

 

Buat Route

Buatlah sebuah file routes.js simpan di dalam folder config. Masukkan kode seperti berikut.

const router = require('express').Router();
const article = require('../controller/article-controller');

router.get("/articles", article.getArticles );
router.post("/articles", article.addArticles );
router.post("/articles/update", article.updateArticles );
router.get("/articles/:id", article.getArticlesByID );
router.get("/articles/delete/:id", article.deleteArticles );

module.exports = router;

Buat sebuah controller bernama article-controller.js dan simpan di folder controller . Controller ini digunakan untuk handle route yang telah kita buat sebelumnya. Di dalam controller ini nanti kita buat beberapa function yang didalamnya terdapat query untuk akses ke database.

const pool = require('../config/connect');
pool.on('error',(err)=> {
    console.error(err);
});

module.exports = {

    getArticles(req, res) {
        pool.getConnection(function(err, connection) {
            if (err) throw err;
            connection.query(`
                SELECT title, image_cover AS img, content, tags, created_at FROM articles WHERE deleted_at IS NULL`
            , function (error, results) {
                if(error) throw error;  
                res.json({ 
                    success: true, 
                    message: 'Success',
                    data: results 
                });
            });
            connection.release();
        })
    },
    getArticlesByID(req, res) {
        let id = req.params.id;
        pool.getConnection(function(err, connection) {
            if (err) throw err;
            connection.query(`
                SELECT title, image_cover AS img, content, tags, created_at FROM articles WHERE deleted_at IS NULL AND id = ?`, [id]
            , function (error, results) {
                if(error) throw error;
                res.json({ 
                    success: true, 
                    message: 'Success',
                    data: results[0] ? results[0] : results 
                });
            });
            connection.release();
        })
    },
    addArticles(req, res) {
        let data = {
            title: req.body.title,
            content: req.body.content,
            tags: req.body.tags
        }
        pool.getConnection(function(err, connection) {
            if (err) throw err;
            connection.query(`
                INSERT INTO articles SET ?`, [data]
            , function (error, results) {
                if(error) throw error;
                res.json({ 
                    success: true, 
                    message: 'Berhasil insert data',
                });
            });
            connection.release();
        })
    },
    updateArticles(req, res) {
        let data = {
            title: req.body.title,
            content: req.body.content,
            tags: req.body.tags
        }
        let id = req.body.id;
        pool.getConnection(function(err, connection) {
            if (err) throw err;
            connection.query(`
                UPDATE articles SET ? WHERE id = ?`, [data, id]
            , function (error, results) {
                if(error) throw error;
                res.json({ 
                    success: true, 
                    message: 'Berhasil update data',
                });
            });
            connection.release();
        })
    },
    deleteArticles(req, res) {
        let date_ob = new Date();
        let date = ("0" + date_ob.getDate()).slice(-2);
        let month = ("0" + (date_ob.getMonth() + 1)).slice(-2);
        let year = date_ob.getFullYear();
        let hours = date_ob.getHours();
        let minutes = date_ob.getMinutes();
        let seconds = date_ob.getSeconds();

        const currentDate =year + "-" + month + "-" + date + " " + hours + ":" + minutes + ":" + seconds;

        let dataUpdate = {
            deleted_at : currentDate
        };
        let id = req.params.id;
        pool.getConnection(function(err, connection) {
            if (err) throw err;
            connection.query(`
                UPDATE articles SET ? WHERE id = ?`, [dataUpdate, id]
            , function (error, results) {
                if(error) throw error;
                res.json({ 
                    success: true, 
                    message: 'Berhasil delete data',
                });
            });
            connection.release();
        })
    }
}

 

Full Source Code

Untuk full source code kurang lebih seperti berikut.

const express = require("express");
const app = express();
const port = 8080;

app.use(express.json());
app.use(
  express.urlencoded({
    extended: true,
  })
);

app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`);
});

app.get("/", (req, res) => {
    res.json({ message: "API Node JS" });
});

const appRoute = require('./config/routes');
app.use('/', appRoute);

Untuk struktur folder kurang lebih seperti berikut.

Struktur folder API node js

Kalian juga bisa lihat source code lengkap di link github https://github.com/sobatcoding21/API-Node-JS

Jangan lupa untuk setiap kali update source code, jalankan kembali perintah  node index.js

Berikut contoh akses URL http:localhost:8080/articles dari API yang telah dibuat menggunakan Postman.

Contoh Node API JS

 

Sekian tutorial kali ini. Jika teman-teman memiliki pertanyaan atau saran mengenai artikel ini, jangan ragu untuk meninggalkan komentar pada form di bawah ini.

Semoga bermanfaat.