Skip to main content
0

ก่อนที่เราจะเริ่มต้น โปรดตรวจสอบให้แน่ใจว่ามี Node.js ติดตั้งในเครื่องของคุณแล้วแล้วหรือยัง หากยังสามารถดาวน์โหลดได้ที่ https://nodejs.org/en/download/

สร้างโปรเจกต์ Express

ในบทความนี้จะพาเพื่อนๆไปทำโปรเจกต์เกี่ยวกับห้องสมุด โดยที่เราจะสามารถเพิ่ม ลบ แก้ไข และสามารถดูข้อมูลของหนังสือแต่ละเล่มได้

เริ่มสร้างโปรเจกต์ใหม่โดยใช้คำสั่ง npm init -y ใน Terminal และสร้างไฟล์ index.js ขึ้นมา

จากนั้นให้ติดตั้ง Express ด้วยคำสั่ง

npm install express

เซ็ตอัพ Web Server ด้วย Express

const express = require('express');
const app = express();

app.use(express.json());

app.listen(3000, () => {
  console.log(`Server is running on port 3000`);
});
JavaScript

สร้าง Mock Database (ใช้ array แทนฐานข้อมูลจริง)

const express = require('express');
const app = express();

app.use(express.json());

let books = [
  { id: 1, title: 'Harry Potter and the Philosopher\'s Stone', author: 'J.K. Rowling' },
  { id: 2, title: 'To Kill a Mockingbird', author: 'Harper Lee' },
  { id: 3, title: 'The Great Gatsby', author: 'F. Scott Fitzgerald' }
];

app.listen(3000, () => {
  console.log(`Server is running on port 3000`);
});
JavaScript

REST APIs คืออะไร?

ก่อนที่เราจะเริ่มต้นเขียน REST APIs เรามาทำความรู้จักกับ REST API ก่อน

REST API ย่อมาจาก “Representational State Transfer Application Programming Interface” คือรูปแบบการเข้าถึงและจัดการข้อมูลระหว่าง Client และ Server โดยใช้ HTTP เป็น Protocol ในการสื่อสาร และใช้ HTTP Method เพื่อกำหนดการกระทำที่จะเกิดขึ้นบนเซิร์ฟเวอร์ โดยส่วนใหญ่มักจะส่งข้อมูลในรูปแบบ JSON ซึ่งเป็นรูปแบบที่สามารถอ่านข้อมูลและเข้าใจได้ง่าย

รู้จักกับ HTTP Methods

HTTP methods คือชุดของคำสั่งที่ใช้ในการกำหนดการกระทำที่เกิดขึ้นบนเซิร์ฟเวอร์เมื่อได้รับ Request จาก Client ผ่านโปรโตคอล HTTP โดยมีหน้าที่เป็นตัวกำหนดการกระทำต่างๆ ที่เกี่ยวข้องกับทรัพยากรบนเว็บเซิร์ฟเวอร์

เมธอดที่พบบ่อยจะมีอยู่ด้วยกัน 4 ตัว:
1.GET: ใช้สำหรับขอข้อมูลจากเซิร์ฟเวอร์ โดยไม่มีการเปลี่ยนแปลงข้อมูลที่อยู่บนเซิร์ฟเวอร์ เช่นการเรียกดูเพจเว็บหน้าแรก การขอข้อมูลรายการสินค้า เป็นต้น
2.POST: ใช้สำหรับส่งข้อมูลจาก client ไปยังเซิร์ฟเวอร์เพื่อสร้างหรืออัปเดตข้อมูล โดยทั่วไปใช้สำหรับการสร้างข้อมูลใหม่ เช่นการสร้างบัญชีผู้ใช้ใหม่ เป็นต้น
3.PUT: ใช้สำหรับการอัปเดตข้อมูลที่มีอยู่บนเซิร์ฟเวอร์ เช่นการอัปเดตข้อมูลโปรไฟล์ผู้ใช้ การแก้ไขข้อมูลสินค้าในระบบ เป็นต้น
4.DELETE: ใช้สำหรับลบข้อมูลที่มีอยู่บนเซิร์ฟเวอร์ เช่นการลบโพสต์จากบล็อก การลบสินค้าออกจากระบบ เป็นต้น

นอกจากนี้ยังมีเมธอดอื่น ๆ เช่น HEAD, OPTIONS, PATCH, CONNECT, TRACE แต่ GET, POST, PUT และ DELETE เป็นเมธอดที่ใช้งานอย่างแพร่หลายในการพัฒนาเว็บแอปพลิเคชันในปัจจุบัน

เริ่มต้นสร้าง REST APIs

const express = require('express');
const app = express();

app.use(express.json());

let books = [
  { id: 1, title: 'Harry Potter and the Philosopher\'s Stone', author: 'J.K. Rowling' },
  { id: 2, title: 'To Kill a Mockingbird', author: 'Harper Lee' },
  { id: 3, title: 'The Great Gatsby', author: 'F. Scott Fitzgerald' }
];

app.get('/api/books', (req, res) => {
  res.json(books);
});

app.get('/api/books/:id', (req, res) => {
  const bookId = parseInt(req.params.id);
  const book = books.find(book => book.id === bookId);
  if (!book) return res.status(404).send('Book not found');
  res.json(book);
});

app.post('/api/books', (req, res) => {
  const { title, author } = req.body;
  const newBook = { id: books[books.length-1].id+1, title, author };
  books.push(newBook);
  res.status(201).json(newBook);
});

app.put('/api/books/:id', (req, res) => {
  const bookId = parseInt(req.params.id);
  const bookIndex = books.findIndex(book => book.id === bookId);
  if (bookIndex === -1) return res.status(404).send('Book not found');
  const { title, author } = req.body;
  books[bookIndex] = { ...books[bookIndex], title, author };
  res.json(books[bookIndex]);
});

app.delete('/api/books/:id', (req, res) => {
  const bookId = parseInt(req.params.id);
  books = books.filter(book => book.id !== bookId);
  res.status(204).send();
});

app.listen(3000, () => {
  console.log(`Server is running on port 3000`);
});
JavaScript

ทดสอบและใช้งาน APIs

ใช้คำสั่ง node index.js เพื่อเริ่มต้นเซิร์ฟเวอร์ Express

node index.js

หลังจากนั้นใช้ โปรแกรมทดสอบ API เช่น postman โดยใส่ API Endpoint ดังนี้
1.ทดสอบดึงข้อมูลรายการหนังสือทุกรายการ ซึ่งผลลัพธ์จะได้รายการหนังสือทั้งหมดจาก Mock Database
GET http://localhost:3000/api/books

2.ทดสอบดึงข้อมูลหนังสือทีละรายการ ซึ่งจะได้ผลลัพธ์หนังสือตามไอดีที่เราใส่เข้าไปตรง Parameter
GET http://localhost:3000/api/books/1

3.ทดสอบเพิ่มข้อมูลหนังสือเข้าไปในระบบ แล้วลองใช้ API Endpoint ที่ใช้เพื่อดูรายการหนังสือทั้งหมดว่ามีหนังสือรายการใหม่เพิ่มเข้าไปหรือไม่
POST http://localhost:3000/api/books
BODY

{
"title": "The Catcher in the Rye",
"author": "J.D. Salinger"
}

4.ทดสอบแก้ไขข้อมูลหนังสือ แล้วลองใช้ API endpoint ที่ใช้ดูหนังสือแต่ละรายการดูว่าข้อมูลหนังสือเปลี่ยนแปลงหรือไม่
PUT http://localhost:3000/api/books/3
BODY

{
"title": "The Lord of the Rings",
"author": "J.R.R. Tolkien"
}

5.ทดสอบลบข้อมูลหนังสือ แล้วลองใช้ API Endpoint ที่ใช้เพื่อดูรายการหนังสือทั้งหมดว่ารายการที่มีไอดีเดียวกับที่เราใส่ไปตรง parameter ถูกลบออกไปไหม
DELETE http://localhost:3000/api/books/3

แหล่งข้อมูลอ้างอิง

https://nodejs.org
https://expressjs.com

Chaiwat Somphao

Author Chaiwat Somphao

More posts by Chaiwat Somphao

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า