Hướng dẫn xây dựng một webserver RESTful API cực easy bằng Nodejs , Express.js và MongoDB (P.1)

255

Xin chào tất cả các bạn Dev thân yêu của tui ^^. Trong bài viết này mình xin hướng dẫn các bạn cách để xây dựng một webservice RESTful API sử dụng NodeJS, ExpressJS và MongoDB. “Nghe có vẻ khiếp quá nhỉ ? nhưng thực ra cực kỳ đơn giản nhé ^_^ “. Bắt đầu thôi !

Để hiểu được bài viết này , mình khuyến khích các bạn nên tìm hiểu trước về các khái niệm như :

  • API là gì ?
  • REST là gì ?
  • RESTful API là gì ?

Ngoài ra, bạn cũng nên tìm hiểu về Javascript trước đi nhé! hoặc có thể xem qua bài viết này các bạn tìm hiểu sau cũng được ^^. OK mình nói nhiều quá rồi 🤣 , bắt đầu vào vấn đề chính thôi nào.

#1 Phân tích bài toán

Chúng ta sẽ đi xây dựng một ứng dụng TicketCar đơn giản. Vì ứng dụng cũng khá là rộng nên mình chỉ hướng dẫn các bạn viết một API có các chức năng Create, Read, Update, và Delete (CRUD) Stations(bến xe) thôi nhé!

Có 4 phương thức chủ yếu ta có thể kể đến khi làm việc với server:

lấy dữ liệu ở một định dạng nào đó (JSON), tạo dữ liệu mới, cập nhật dữ liệu, xóa dữ liệu. REST hoạt động chủ yếu dựa vào giao thức HTTP. Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng.

  • POST: tạo dữ liệu
  • GET: lấy dữ liệu
  • PUT: update dữ liệu
  • DELETE: xoá dữ liệu

#2 Chuẩn bị

Nếu đây là lần đầu tiên bạn sử dụng NodeJS và chưa cài bất cứ gì liên quan tới nó thì bạn cần thực hiện các bước sau:

  • Để chắc chắn bạn không bị “não cá vàng” thì bạn cần kiểm tra xem mình đã có cài nodejs chưa bằng cách gõ lệnh trên terminal (ở đây mình xài hệ điều hành macOS , bạn nào có xài windown hay linux thì cũng gõ theo mình nhé! Không được thì cứ comment dưới phần cuối của bài viết, vì trên windown thì cũng phải setup biến môi trường này nọ nữa :3)
node -v
Version nodejs của mình

Tới đây thì bạn chắc biết mình có cài hay chưa rồi đúng hông nè. Nếu chưa cài thì tham khảo link : Tải và cài đặt NodeJS

OK! “Đồ chơi” của bạn đã sẵn sàng chưa? Bắt tay vào code thôi nè!

#3 Tạo project và cài đặt

Mở folder nơi chứa project của bạn. Mình để project ngoài Desktop và tên project mình đặt là Ticket-app-api nhé!

Mở terminal lên và di chuyển vào thư mục bằng dòng lệnh

cd Desktop/Ticket-app-api

Khởi tạo project bằng dòng lệnh trên terminal

npm init
Khởi tạo project

Sau một hồi EnterYes mỏi tay thì mình cũng đã khởi tạo project thành công rồi nè ^^

Cài đặt ExpressJS

Nói sơ một xíu. Ở đây các bạn cài đặt các package bằng npm hay yarn gì cũng được hết. Mình thích xài yarn hơn nên trong bài này mình sẽ hướng dẫn các bạn cài package bằng yarn nhé !

yarn add express

ExpressJS là một Framework nhỏ, nhưng nó rất linh hoạt và được xây dựng trên nền tảng của NodeJS. Nó cung cấp các tính năng mạnh mẽ để phát triển trên các môi trường website hoặc mobile.

Cài đặt Body-parser

yarn add body-parser

Trong bài viết này mình sử dụng body-parser mục đích là để lấy dữ liệu trong req.body khi bạn thao tác hay handle dữ liệu của người dùng gửi lên server thôi. Bạn có thể tham khảo riêng các bài viết về thằng body-parser để hiểu hơn. Ở đây các bạn chỉ làm theo mình nhé !

Còn nữa, mình có cài thêm một package nữa có tên là nodemon để mỗi khi bạn thay đổi bất cứ gì trong code thì sẽ tự động reload lại server. Cài đặt như sau:

Cài đăt nodemon

yarn add nodemon

Các bạn thêm "dev": "nodemon server.js"vào file package.json nha. Các bạn mở terminal lên sau đó gõ npm run dev để khởi chạy server.

Sau khi cài đặt các package xong thì mở file package.json lên xem nó ra sao nhé ^^

File package.json

{
  "name": "ticket-app-api",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "nodemon server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "nodemon": "^2.0.3",
    "yarn": "^1.22.4"
  }
}

Cấu trúc thư mục của project

Bắt đầu thiết lập webserver như sau:

Các bạn mở file server.js , trong file này bạn bỏ vào giúp mình PORT của server. Ở đây mình để port là 5000.

Thiết lập Database MongoDB

Để viết Promise tốt hơn mình có sử dụng thêm 1 package có tên là bluebird. Các bạn đọc hướng dẫn và cài đặt nhé. Để tìm hiểu về bluebird các bạn có thể tham khảo ở link tại đây!

Mình tạo URL = "mongodb+srv://trieuvidev:<password>@cluster0-9e9ja.mongodb.net/ticket-car-app" tại Mongodb Cloud. Các bạn nào chưa biết tạo thì có thể tham khảo “Chị Google” nhé! Mình cũng sẽ có một bài viết hướng dẫn trong tương lai.

File connectDatabase.js

const mongoose = require("mongoose"),
bluebird = require("bluebird");

const connectDatabase = () => {
  mongoose.Promise = bluebird;
  let URL = "mongodb+srv://trieuvidev:<password của bạn>@cluster0-9e9ja.mongodb.net/test"
  return mongoose
    .connect(URL, {
      useNewUrlParser: true,
      useUnifiedTopology: true
    })
    .then(() => console.log("Connect Database MongoDB Successfuly"))
    .catch(console.log);
};
module.exports = connectDatabase;

Sau đó chúng ta import file connectDatabase.js vào trong file server.js

File Server.js

const express = require('express'),
path = require('path'),
router = express.Router(),
port = process.env.PORT || 5000,
bodyParser = require('body-parser')
connectMongoDB = require('./connectDatabase');
var app = express();
connectMongoDB(); // file connect Database được gọi ở đây

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

app.listen(port)
console.log('Server listening on port: ' + port)

Cấu hình file Routes

Tại thư mục có tên routes trong thư mục này mình tạo một file index.js. Trong file index này mình sẽ viết các phương thức xử lý.

File index.js

const express = require('express'),
router = express.Router();
// test
router.get("/", (req, res) => { 
    return res.send({messenger: "Hello Thejsdoor.com"})
});
module.exports = router;

Sau đó mở file server.js để import routes vào

Tới đây thì OK rồi, các bạn mở giúp mình terminal lên và khởi động server bằng lệnh. Lưu ý là đường dẫn bạn phải đang đứng ở thư mục của project nhé!

yarn dev
// hoặc 
npm start  dev

Xem thông báo của terminal và trình duyệt ra sao nhé! Chắc hồi hộp lắm đúng không nè ^^

Bạn truy cập vào url: http://localhost:5000 (đúng port của bạn nhé)

Hình ảnh từ tình duyệt

Tada ^^ Xong rồi nè! Tới đây là hết PHẦN I trong series Hướng dẫn xây dựng một web RESTful API kỳ easy bằng Nodejs , Express.js và MongoDB rồi! Đợi tiếp PHẦN II nhé!

Chúc bạn thành công!