Skip to main content

NodeJS# Membuat RestFull API Dengan NodeJS

Semangat menjalankan ibadah puasa...

Postingan kali ini saya akan share sedikit pengetahuan dari hasil belajar membuat RestFull API dengan NodeJs dan MySQL. Ok langsung saja pertama kita buat project baru dengan nama node-api-mysql.

jika teman2 belum tau cara membuat project baru di NodeJs bisa lihat DISINI .
setelah selesai membuat project baru, kita perlu menambahkan beberapa library yaitu :
- mysql
- body-parser
- cors
- rootpath 
- nodemon

lalu buat file baru dengan nama server.js dan isikan source code berikut :


require('rootpath')();
const express    = require('express'),
      port       = process.env.PORT || 7000,
      bodyParser = require('body-parser'),
      cors       = require('cors'),
      basicAuth  = require('./app/auth/basic-auth'),
      routes     = require('./app/routes');
      const app = express();


app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(basicAuth);
app.use(cors());
routes(app);

app.get('/', (reqres=>{    
    res.json({'status':true,'message':'Node JS API V.01'});
})

app.listen(port);
console.log('NodeJS-API running in port : ' + port);

struktur project bisa dilihat seperti berikut :



Authentication
untuk authentication disini saya menggunakan basic auth, berikut source code pada folder auth :

- basic-auth.js

const userService = require('./user.service');

module.exports = basicAuth;

async function basicAuth(reqresnext) {
    
    if (req.path === '/users/authenticate') {
        return next();
    }

    // check basic auth
    if (!req.headers.authorization || req.headers.authorization.indexOf('Basic ') === -1) {
        const data = {
            'status' : false,
            'message' : 'You are not authorized'
        };
        return res.status(401).json(data);
    }    

    //Verifikasi auth
    const base64Credentials =  req.headers.authorization.split(' ')[1];
    const credentials = Buffer.from(base64Credentials'base64').toString('ascii');
    const [usernamepassword] = credentials.split(':');

    const user = await userService.authenticate({ usernamepassword });
    
    if (!user) {
        const data = {
            'status' : false,
            'message' : 'Invalid Authentication Credentials'
        };
        return res.status(401).json(data);
    }else{
        
    }
    
    req.user = user
    next();
}


- user.service.js 

// users hardcoded for simplicity, store in a db for production applications
const users = [
        { id: 1username: 'test'password: 'test'firstName: 'Test'lastName: 'User' },
        { id: 2username: '+6287763098298'password: '12345678'firstName: 'Test'lastName: 'User' }
    ];

const userLogin = [];    

module.exports = {
    authenticate
};

async function authenticate({ usernamepassword }) {
       const user = users.find(u => u.username === username && u.password === password);
    if (user) {
        const { password, ...userWithoutPassword } = user;
        return userWithoutPassword;
    }
}


lalu index.js yang ada didalam folder routes, nanti semua routing akan dimasukkan disini, sebagai contoh disini saya membuat satu routing yaitu siswa

'use strict';

module.exports = function(app) {
    var dataSiswa = require('../controller/masterdata/siswaController');
    
    //Route Siswa
    app.route('/siswa').get(dataSiswa.getSiswa);

    
};



Controller
di dalam controller->masterdata tambahkan siswaController.js

'use strict';

const response   = require('../../response');

exports.getSiswa = async function(reqres){
    response.ok('Data siswa'res)
};

siswaController.js ini dipanggil dari routing


tambahkan file response.js

'use strict';

exports.ok = function(valuesres) {
  var data = {
      'status': true,
      'data': values
  };
  res.json(data);
  res.end();
};

exports.error = function(messageres){
    const data = {
      'status' : false,
      'message' : message
    };
    res.json(data);
    res.end();
};
 

jika sudah coba jalankan server dengan command : nodemon server.js, maka akan terlihat seperti berikut : 

untuk mencoba API-nya jalankan menggunakan postman



klik send 

 
Jika menggunakan password atau username yang belum ada maka response-nya seperti berikut :


untuk proses pembuatan CRUD akan saya share di postingan selanjutnya.

Terimakasih :D

Comments

Popular posts from this blog

PHP MySql CRUD Dengan Konsep MVC

Pada postingan kali ini saya akan sharing cara membuat CRUD dengan php menggunakan konsep MVC, ok langsung saja buka code editor (saya menggunakan sublime text) dan buat folder baru dengan nama phpmvc didalam folder htdocs kalian dan tambah folder seperti berikut :  Setelah itu kita siapkan database di mysql, buat database dengan nama phpmvc dan tablenya seperti gambar berikut : tambahkan file config.php didalam folder app/config : <?php define('BASEURL', 'http://localhost:8181/phpmvc/public'); define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PASS', ''); define('DB_NAME', 'phpmvc'); kemudian tambahkan 3 file controller didalam folder app/controllers, yaitu Home, About, dan Mahasiswa : Home.php <?php class Home extends Controller { public function index() { $data['nama'] = $this->model('User_model')->getUser()...

Cara Sederhana Multi Insert Data Dengan PHP - MySQL

Pada postingan kali ini saya akan share cara melakukan insert lebih dari satu data dengan menggunaka PHP- Jquery dan MySQL. Pertama buat database di MySQL dan table, disini saya membuat database dengan nama db_latihan dan table dengan nama t_barang dengan struktur table seperti berikut : Setelah membuat database dan table selanjutnya membuat project PHP, project PHP nya saya buat dengan nama multi-insert, lalu didalam folder ini saya membuat dua file yaitu index.php dan insert.php . Source code index.php seperti berikut : <! doctype   html > < html   lang = "en" >    < head >      <!-- Required meta tags -->      < meta   charset = "utf-8" >      < meta   name = "viewport"   content = "width=device-width, initial-scale=1" >      <!-- Bootstrap CSS -->      < link ...

IT Asset Management Dengan PHP MySQL

Pada postingan kali saya akan share sebuah aplikasi IT Asset management yang fungsinya untuk memonitoring semua Asset khusus IT, contohnya : Laptop/komputer , Printer, Router, Hardisk, dll. Dalam aplkasi ini kita bisa mengetahui Asset IT posisinya dimana dan digunakan oleh siapa. untuk data-data yang dibutuhkan antara lain : 1. data kategori asset dalam menu ini kita bisa meng-input jenis2 kategory asset : tambah kategori asset : 2. data department 3. data karyawan 4. data department per karyawan 5. data asset location  6. data satuan asset dan untuk transaksi yang ada dalam aplikasi ini adalah,  1. create asset, pada menu create asset ini kita akan mengalokasikan sebuah asset ke karyawan/personnel tampilannya seperti berikut: setelah klik tombol save akan muncul seperti dibawah : untuk melihat detail asset yang sudah dibuat tadi, kita bisa pilih...