ตัวอย่าง Nodejs Express Rest Api ตอนที่ 1



รูปแบบหนึ่งในการพัฒนาเว็บไซต์มีการแบ่งเป็นระบบหน้าบ้านและระบบหลังบ้าน  ในภาษาเชิงเทคนิคเรียก
ว่า front-end กับ back-end   ส่วน front-end ทำหน้าที่ในการจัดการหน้าเว็บไซต์ การดึงข้อมูลจากระบบหลัง
บ้านมาแสดงผล รวมถึงการรับข้อมูลจากผู้ใช้ส่งไปให้หลังบ้าน   ส่วนระบบ back-end ทำหน้าที่ในการจัดการ
ข้อมูลที่เข้าและออกโดยการนำไปประมวลผลอะไรบางอย่างแล้วมีการบันทึกลงฐานข้อมูล( database )  โดย
บทความนี้จะเน้นไปที่เรื่องตัวอย่างการสร้างระบบ back-end ที่เป็นแบบ REST api  โดยการทำงานหลักๆจะมี
ดังนี้
  1. บันทึกข้อมูลลง database
  2. อ่านข้อมูลใน database
  3. แก้ไขข้อมูลใน database
  4. ลบข้อมูลใน database
4 ข้อข้างบนสรุปสั้นว่า CRUD ( create read update delete ) เป็นฟีเจอร์พื้นฐานที่ใช้บ่อยมากในการ
ทำงานกับ database


การส่งข้อมูลระหว่าง front-end กับ back-end นั้นจะใช้รูปแบบ json ในการรับส่งข้อมูลไปมาระหว่างกัน 
รูปแบบ json นั้นจะกำหนดเป็นแบบใดก็ได้ไม่ตายตัว    ส่วนต่อไปจะเป็นการเสนอตัวอย่าง RESR api ในรูปแบบ
ของผมเองโดยใช้ express เชื่อมต่อ database แบบ mockup ขึ้นมาก่อน  โดยจะพาทำทำ REST api ของ
todo list

โครงสร้าง project เป็นดังนี้

api_v1
  |--  todo
        |- database
        |   |- mock.js
        |- todo.js
        |- routes.js
config
  |-  default.json
index.js
package.json




เริ่มต้นให้สร้างไดเรกทอรี่( หรือโฟล์เดอร์นั่นเองมันคืออันเดียวกัน ) ชื่อ express-todo จากนั้นใช้หน้าต่าง
คำสั่ง command หรือ cmd เข้าไปใน express-todo จากนั้นใช้คำสั่ง

npm init -y 


เพื่อเริ่มสร้างโปรเจ็คของ nodejs จากนั้นให้รันคำสั่งด้านล่างนี้เพื่อติดตั้ง module ทั้งหมดที่ต้องการใช้งาน

npm i -S cors express body-parser config
npm i -S เป็นรูปแบบย่อของคำสั่ง npm install --save เมื่อติดตั้งเสร็จแล้วต่อไปให้สร้างไดเรกทอรี่ชื่อ
config แล้วให้ข้างในมีไฟล์ default.json โดยไฟล์นี้จะใช้เก็บค่า environment ต่างๆของโปรเจ็ค เช่น port ที่ใช้
รัน เป็นต้น ให้สร้างไฟล์ default.json ตามตัวอย่างข้างล่างนี้


{
"local_url": "http://localhost:",
"http_port" : 8000
}

    จากนั้นใน path เดียวกับ package.json ให้สร้างไฟล์ index.js ตามตัวอย่างข้างล่างนี้


const express = require('express');
const app = express();
const config = require('config');
const port = config.get('http_port');
const cors = require('cors');

const bodyParser = require('body-parser');

const corsOptions = {
    origin: '*',
    method: "GET,HEAD,PUT,PATCH,POST,DELETE",
    header:{
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*'
    }
}

app.use(cors(corsOptions));

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// require('./api_v1/todo/routes')(app);

app.get('/', function(req, res){
    res.status(200).send("Hello World");
});

// launch ======================================================================
app.listen(port, () => {
    console.log('This server is running on port: ' + port);
});
module.exports = app;


สังเกตบรรทัด  require('./api_v1/todo/routes')(app);  โค้ดส่วนนี้จะ comment ปิดไว้ก่อนเมื่อ
เราสร้าง api เสร็จเดี๋ยวเราจะ uncomment ออกในภายหลัง  ขั้นต่อไปให้ทดลองรันคำสั่ง 

node index.js 

จะได้ output ข้อความขึ้นว่า This server is running on port: 8000  แล้วถ้าเราเปิดเว็บบราวเซอร์
แล้วเข้า url ไปที่ localhost:8000 จะขึ้นข้อความว่า Hello World ถือว่าใช้ได้

ความคิดเห็น