hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
      • MongoDB
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
    • Git và Github
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • NodeJS
Tìm hiểu Modules, Packages và Built-in Modules trong Node.js

Tìm hiểu Modules, Packages và Built-in Modules trong Node.js

  • 21-04-2026
  • Toanngo92
  • 0 Comments

Dưới đây là bản nội dung đã được biên soạn lại từ 2 slide Session 3: Modules and Packages in Node.js và Session 4: Built-in Modules để anh/chị có thể dùng làm bài viết đăng web. Nội dung được viết theo hướng dễ đọc, phù hợp bài chia sẻ kiến thức cho người mới học Node.js.

Tiêu đề gợi ý:
Tìm hiểu Modules, Packages và Built-in Modules trong Node.js

Mô tả ngắn:
Node.js là nền tảng mạnh mẽ cho phát triển ứng dụng phía máy chủ. Để làm việc hiệu quả với Node.js, người học cần hiểu rõ module, package, framework và các built-in module như http, url, events, os, path… Đây là những thành phần cốt lõi giúp xây dựng ứng dụng web, xử lý tệp, quản lý URL và phát triển các hệ thống hướng sự kiện.


Mục lục

  • Tìm hiểu Modules, Packages và Built-in Modules trong Node.js
    • 1. Module trong Node.js là gì?
    • 2. Các loại module trong Node.js
      • Core Modules
      • Local Modules
      • Third-party Modules
    • 3. Cách import module trong Node.js
    • 4. Làm việc với module xử lý file
    • 5. Package trong Node.js là gì?
    • 6. Sử dụng NPM để quản lý package
    • 7. Web Framework trong Node.js
    • 8. Các mô hình framework phổ biến
      • MVC
      • Full Stack MVC
      • REST API
    • 9. Các utility functions trong Node.js
    • 10. Built-in Modules và vai trò trong Node.js
    • 11. HTTP Module trong Node.js
    • 12. Quy trình tạo một HTTP server đơn giản
    • 13. URL Module trong Node.js
    • 14. Events Module và lập trình hướng sự kiện
    • 15. Kết luận

Tìm hiểu Modules, Packages và Built-in Modules trong Node.js

Khi bắt đầu học Node.js, một trong những kiến thức nền tảng quan trọng nhất là hiểu cách tổ chức mã nguồn bằng module và package, đồng thời biết cách tận dụng các built-in modules có sẵn để xây dựng ứng dụng nhanh hơn. Đây là các khái niệm cốt lõi giúp lập trình viên phát triển ứng dụng phía máy chủ một cách có cấu trúc, dễ mở rộng và dễ tái sử dụng.

1. Module trong Node.js là gì?

Trong Node.js, module có thể hiểu là một tập hợp các hàm hoặc đoạn mã được đóng gói lại để phục vụ cho một nhiệm vụ cụ thể. Module giúp chia nhỏ chương trình thành nhiều phần rõ ràng hơn, dễ quản lý hơn và có thể tái sử dụng trong nhiều tệp khác nhau. Slide Session 3 cho thấy module có 3 đặc điểm nổi bật: chúng giống như một nhóm chức năng được gom lại với nhau, cần được import vào mã nguồn để sử dụng, và có thể được tái sử dụng trong nhiều tệp chương trình Node.js khác nhau.

Một ưu điểm rất lớn của module là giúp dự án tránh tình trạng viết mọi thứ trong một file duy nhất. Thay vì để toàn bộ logic trong một nơi, lập trình viên có thể tách riêng xử lý file, xử lý mạng, xử lý dữ liệu hoặc các tác vụ tiện ích thành từng module riêng biệt. Điều này giúp code sạch hơn, dễ bảo trì hơn và hỗ trợ làm việc nhóm hiệu quả hơn.

2. Các loại module trong Node.js

Theo nội dung trong slide, Node.js có 3 loại module chính:

Core Modules

Đây là các module được tích hợp sẵn khi cài đặt Node.js. Người dùng không cần tải thêm mà chỉ cần import là có thể sử dụng. Một số core module quen thuộc được nhắc đến trong bài học là os, http, fs, path, url và events.

Local Modules

Đây là các module do chính lập trình viên tạo ra trong dự án của mình. Local module thường chứa các hàm xử lý nghiệp vụ riêng và có thể được tái sử dụng giữa các phần của cùng một ứng dụng. Slide cũng nhấn mạnh rằng các module này có thể được phân phối qua dự án bằng Node Package Manager nếu cần.

Third-party Modules

Đây là các module được bên thứ ba phát triển và chia sẻ trực tuyến để các ứng dụng khác có thể sử dụng. Chúng thường được cài đặt thông qua NPM và giúp tiết kiệm rất nhiều thời gian phát triển nhờ tận dụng sẵn thư viện có sẵn thay vì viết lại từ đầu.

3. Cách import module trong Node.js

var module_name = require('module_name');

Ở đây, biến bên trái là nơi lưu instance của module được import, còn chuỗi bên trong require() là tên module cần sử dụng, ví dụ như os, http hay fs. Đây là bước đầu tiên để dùng được các chức năng do module cung cấp.

Ví dụ minh họa:

const os = require('os');
console.log(os.platform());

Đoạn mã trên cho thấy cách import module os để lấy thông tin nền tảng hệ điều hành.

4. Làm việc với module xử lý file

Các phương thức làm việc với file phổ biến là fs.open, fs.writeFile, fs.appendFile, fs.readFile, fs.unlink và fs.rmdir.

Điều này cho thấy Node.js không chỉ phù hợp để xây dựng web server mà còn rất mạnh ở khả năng thao tác với hệ thống file. Chẳng hạn, khi xây dựng một ứng dụng lưu log, upload tài liệu hoặc xử lý dữ liệu đầu vào từ file, các module dạng này đóng vai trò rất quan trọng.

Ví dụ:

const fs = require('fs');

fs.writeFile('hello.txt', 'Xin chào Node.js', function(err) {
  if (err) throw err;
  console.log('Đã ghi file thành công');
});

5. Package trong Node.js là gì?

ackage là một container của modules, tức là một gói chứa một hoặc nhiều module liên quan với nhau, được gom lại thành một đơn vị thống nhất và có thể được import vào ứng dụng bằng hàm require.

Nói cách khác, nếu module là một “khối chức năng”, thì package là một “gói hoàn chỉnh” có thể bao gồm nhiều khối chức năng khác nhau. Package giúp chia sẻ mã nguồn dễ dàng hơn, chuẩn hóa việc cài đặt và quản lý phiên bản trong dự án Node.js.

6. Sử dụng NPM để quản lý package

Slide cũng giới thiệu các lệnh cơ bản khi làm việc với package qua NPM:

  • npm install <package_name> để cài đặt cục bộ
  • npm install -g <package_name> để cài đặt toàn cục
  • npm uninstall <package_name> để gỡ cài đặt
  • npm update <package_name> để cập nhật package

Đây là các thao tác cơ bản mà hầu như bất kỳ dự án Node.js nào cũng sử dụng. Nhờ NPM, lập trình viên có thể nhanh chóng thêm thư viện vào dự án, cập nhật phiên bản mới hoặc loại bỏ những package không còn cần thiết.

7. Web Framework trong Node.js

eb framework là tập hợp các thư viện hoặc công cụ hỗ trợ phát triển ứng dụng web nhanh hơn. Framework giúp giảm việc viết lại các đoạn mã lặp đi lặp lại, cung cấp thư viện cho các tác vụ như truy cập cơ sở dữ liệu hay quản lý session, đồng thời có thể đóng vai trò như một khuôn mẫu để thiết kế giao diện và cấu trúc ứng dụng.

Một số framework Node.js được liệt kê trong bài học gồm có Express.js, Sails.js, Hapi.js, Meteor.js, Socket.js và Total.js. Đây là các lựa chọn tiêu biểu minh họa cho hệ sinh thái phong phú của Node.js trong phát triển web.

8. Các mô hình framework phổ biến

Theo phần “Types of Framework Models in Node.js”, bài học chia framework thành 3 mô hình tiêu biểu:

MVC

Mô hình Model – View – Controller giúp tách phần xử lý dữ liệu, giao diện và điều khiển luồng xử lý thành các phần riêng biệt. Slide nêu ví dụ Express.js như một framework có thể áp dụng kiểu tổ chức này.

Full Stack MVC

Mô hình này cung cấp thư viện và công cụ cho cả phía front-end lẫn back-end, phù hợp khi xây dựng ứng dụng toàn diện.

REST API

REST API là tập các quy tắc giúp client và server giao tiếp với nhau thông qua các phương thức HTTP. Đây là nền tảng rất quan trọng khi xây dựng hệ thống web service hoặc ứng dụng kết nối giữa nhiều nền tảng khác nhau.

9. Các utility functions trong Node.js

nhóm các utility functions như:

  • OS: tương tác với hệ điều hành
  • Path: xử lý đường dẫn
  • Net: hỗ trợ các chức năng liên quan đến mạng
  • DNS: hỗ trợ xử lý liên quan đến tên miền
  • ngoài ra slide còn liệt kê thêm Domain trong nhóm tiện ích này.

Hai module được minh họa rõ hơn là OS module và Path module. Với OS module, một số phương thức được nêu gồm os.type, os.platform và os.totalmem. Với Path module, một số phương thức quan trọng là path.join, path.parse, path.dirname và path.extname. Những công cụ này rất hữu ích khi ứng dụng cần làm việc với hệ điều hành và đường dẫn file theo cách an toàn, có tổ chức.

Ví dụ:

const path = require('path');

console.log(path.join('uploads', 'images', 'photo.png'));
console.log(path.extname('photo.png'));

10. Built-in Modules và vai trò trong Node.js

Built-in Modules là những module cốt lõi được tích hợp sẵn trong Node.js và cung cấp nhiều chức năng thiết yếu cho các tác vụ như tạo web server, làm việc với file, xử lý URL hay xây dựng hệ thống hướng sự kiện. Phần tóm tắt của slide nhấn mạnh rằng built-in modules mang lại lợi ích về hiệu năng, độ tin cậy và khả năng tương thích trong nhiều tác vụ khác nhau.

11. HTTP Module trong Node.js

Một trong những built-in module quan trọng nhất là http. Theo bài học, module này có thể được dùng để tạo HTTP server và thực hiện HTTP request. Ba lớp chính được nêu trong slide là:

  • http.Server: xử lý request đến và tạo response cho client
  • http.ClientRequest: định nghĩa chi tiết của một HTTP request
  • http.ServerResponse: gửi HTTP response về cho client

Ngoài ra, một số phương thức chính của http.Server bao gồm http.createServer, server.listen và server.close. Trong khi đó, http.ClientRequest có các phương thức như request.write và request.end; còn http.ServerResponse có response.write, response.end và response.writeHead.

Ví dụ tạo HTTP server đơn giản:

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello from Node.js server');
});

server.listen(3000, () => {
  console.log('Server is running at http://localhost:3000');
});

12. Quy trình tạo một HTTP server đơn giản

Nội dung mô tả quy trình tạo server khá trực quan: mở trình soạn thảo mã, import HTTP module, tạo server, xử lý request, đặt định dạng response là plain text, chỉ định cổng, lưu file dưới tên servercreate.js, khởi động server và cuối cùng là kiểm tra hoạt động của nó. Quy trình này cho thấy cách Node.js cho phép lập trình viên nhanh chóng xây dựng một web server tối thiểu chỉ với vài dòng mã.

Bài học cũng minh họa thêm cách tạo HTML response cho HTTP server, tức là thay vì trả về plain text, server có thể trả về nội dung HTML để trình duyệt hiển thị như một trang web đơn giản.

13. URL Module trong Node.js

Một built-in module khác rất quan trọng là url. Theo slide, module này có 3 ứng dụng chính:

  • phân tích URL thành từng thành phần
  • xây dựng URL từ các thành phần
  • lấy ra các thành phần cụ thể của URL

Hai phương thức tiêu biểu:

  • url.parse() để phân tích một chuỗi URL thành object chứa các thành phần khác nhau
  • url.format() để tạo lại chuỗi URL từ object URL hoặc các thành phần URL

Ví dụ:

const url = require('url');

const myUrl = 'https://www.jsonplaceholder.typicode.com/todos/61';
const parsedUrl = url.parse(myUrl, true);

console.log(parsedUrl.protocol);
console.log(parsedUrl.hostname);
console.log(parsedUrl.pathname);

14. Events Module và lập trình hướng sự kiện

Node.js nổi tiếng với mô hình bất đồng bộ và hướng sự kiện, vì vậy events là module rất quan trọng. Theo slide, module này bao gồm lớp EventEmitter, hỗ trợ tạo custom event emitter bằng cách mở rộng lớp này, đồng thời phù hợp để xây dựng nhiều loại ứng dụng như hệ thống thời gian thực, cơ chế gửi thông báo, xử lý tương tác người dùng và đăng ký các event listeners.

Một số phương thức của events module được liệt kê gồm:

  • on(event, listener)
  • once(event, listener)
  • removeListener(event, listener)
  • emit(event[, ...args])
  • setMaxListeners(n)

Ví dụ đơn giản:

const EventEmitter = require('events');

const emitter = new EventEmitter();

emitter.on('sendNotification', () => {
  console.log('Thông báo đã được gửi');
});

emitter.emit('sendNotification');

15. Kết luận

Từ hai bài học này có thể thấy rằng Node.js không chỉ là một môi trường chạy JavaScript phía máy chủ, mà còn là một hệ sinh thái có cấu trúc rất rõ ràng. Module giúp tổ chức mã nguồn thành các phần có thể tái sử dụng. Package giúp đóng gói và quản lý các module hiệu quả hơn thông qua NPM. Framework giúp tăng tốc phát triển ứng dụng web. Còn built-in modules như http, url, events, os và path cung cấp những công cụ cốt lõi để lập trình viên nhanh chóng xây dựng server, xử lý URL, làm việc với hệ điều hành và phát triển hệ thống hướng sự kiện.

Nếu nắm chắc các khái niệm này, người học sẽ có nền tảng rất tốt để tiếp tục đi sâu hơn vào Express.js, REST API, thao tác với file, kết nối cơ sở dữ liệu và xây dựng các ứng dụng backend hoàn chỉnh bằng Node.js.

Bài tập

 

Bộ bài tập thực hành – HTTP Server Node.js

Quy tắc chung

  • Chỉ dùng Node.js built-in module
  • Không dùng Express
  • File chạy bằng lệnh:
node tenfile.js
  • Test bằng trình duyệt hoặc Postman
  • Port nên dùng: 3000

PHẦN 1 — Bài khởi động nhưng làm đầy đủ

Bài 1: Tạo HTTP server đầu tiên

Mục tiêu

Làm quen với:
  • require('http')
  • http.createServer()
  • res.writeHead()
  • res.end()
  • server.listen()

Yêu cầu

Tạo file server1.js:
  1. Import module http
  2. Tạo server tại cổng 3000
  3. Khi truy cập http://localhost:3000, server trả về:
Hello, this is my first HTTP server
  1. Status code phải là 200
  2. Header Content-Type phải là text/plain

Kết quả mong muốn

Trình duyệt hiển thị:
Hello, this is my first HTTP server

Yêu cầu thêm

  • Console phải in:
Server is running at http://localhost:3000

Bài 2: Trả về nội dung HTML

Mục tiêu

Luyện trả về HTML thay vì text.

Yêu cầu

Tạo file server2.js:
  1. Tạo HTTP server
  2. Trả về nội dung HTML hoàn chỉnh:
<h1>Welcome to My Website</h1>
<p>This page is served by Node.js HTTP module</p>
  1. Header phải là:
'Content-Type': 'text/html'

Yêu cầu thêm

Trong HTML phải có:
  • 1 tiêu đề <h1>
  • 1 đoạn mô tả <p>
  • 1 danh sách <ul> gồm 3 mục:
    • Home
    • About
    • Contact

Bài 3: Tách response thành nhiều phần

Mục tiêu

Luyện res.write() và res.end().

Yêu cầu

Tạo file server3.js:
  • Không được viết hết nội dung trong một res.end(...)
  • Phải dùng ít nhất:
    • 2 lần res.write()
    • 1 lần res.end()

Nội dung trả về

<h1>Node.js Server</h1>
<p>Learning HTTP response step by step</p>

Câu hỏi tự kiểm tra

  • res.write() để làm gì?
  • res.end() để làm gì?
  • Nếu quên res.end() thì chuyện gì xảy ra?

PHẦN 2 — Route handling cơ bản

Bài 4: Tạo server nhiều route

Mục tiêu

Luyện req.url

Yêu cầu

Tạo file server-routes.js với các route sau:
URL Nội dung trả về
/ Home page
/about About us page
/contact Contact page
/services Our services page
route khác 404 - Page not found

Điều kiện

  • Route hợp lệ trả status 200
  • Route không tồn tại trả status 404

Yêu cầu thêm

Với route không tồn tại:
  • trả Content-Type: text/plain
  • nội dung phải có cả URL người dùng nhập
Ví dụ truy cập /abc thì hiển thị:
404 - Page not found: /abc

Bài 5: Route HTML hoàn chỉnh

Mục tiêu

Luyện trả HTML khác nhau theo từng route.

Yêu cầu

Tạo file server-pages.js:

Route /

Trả về trang chủ có:
  • tiêu đề: Welcome
  • mô tả: This is the home page
  • menu gồm link:
    • /
    • /about
    • /contact

Route /about

Trả về:
  • tiêu đề: About
  • nội dung: We are learning Node.js HTTP server

Route /contact

Trả về:
  • tiêu đề: Contact
  • email: [email protected]
  • số điện thoại: 0123456789

Route khác

Trả về trang HTML lỗi 404:
  • tiêu đề: 404 Not Found
  • mô tả có URL vừa nhập

Yêu cầu nâng cao

Tất cả các trang phải có:
  • cùng 1 menu điều hướng
  • thẻ <title> riêng cho từng trang

Bài 6: Route theo method

Mục tiêu

Làm quen với req.method

Yêu cầu

Tạo file server-method.js

Khi truy cập /

  • Nếu request là GET → trả:
This is a GET request

Khi gửi request /submit

  • Nếu request là POST → trả:
Data submitted successfully

Nếu method không đúng

Ví dụ:
  • GET /submit
  • POST /
thì trả:
Method not allowed
với status code 405

Gợi ý test

  • Trình duyệt thường gửi GET
  • Dùng Postman để test POST

PHẦN 3 — Log request và phân tích request

Bài 7: Ghi log toàn bộ request

Mục tiêu

Luyện đọc:
  • req.method
  • req.url
  • req.headers

Yêu cầu

Tạo file server-log.js Mỗi lần có request tới server, console phải in:
----- New Request -----
Method: GET
URL: /about
User-Agent: ...

Response trả về

  • luôn là Request received

Yêu cầu thêm

In thêm thời gian hiện tại:
Time: 2026-04-21 10:30:00

Bài 8: Server phân tích URL

Mục tiêu

Luyện req.url để xử lý logic.

Yêu cầu

Tạo file server-analyze.js Nếu truy cập:
  • / → trả Home
  • /product → trả Product page
  • /product/1 → trả Product detail 1
  • /product/2 → trả Product detail 2
Nếu không khớp thì trả 404.

Yêu cầu nâng cao

Không được viết if riêng cho từng /product/1, /product/2, /product/3... Hãy tìm cách:
  • tách URL
  • lấy id
  • trả về:
Product detail: <id>
Ví dụ:
  • /product/15 → Product detail: 15

PHẦN 4 — Query string và url module

Session 4 cũng có phần url module để parse URL và lấy thành phần URL.

Bài 9: Lấy query string từ URL

Mục tiêu

Kết hợp http + url

Yêu cầu

Tạo file server-query.js Khi truy cập:
http://localhost:3000/user?name=Toan&age=25
Server phải trả về:
Name: Toan
Age: 25

Nếu thiếu query

Ví dụ:
/user
thì trả:
Missing query parameters

Yêu cầu thêm

  • Nếu chỉ có name
  • hoặc chỉ có age thì thông báo rõ tham số nào bị thiếu
Ví dụ:
Missing parameter: age

Bài 10: Máy tính mini qua URL

Mục tiêu

Thực hành query string và xử lý logic.

Yêu cầu

Tạo file server-calc.js URL có dạng:
/calc?a=10&b=5
Server trả về:
  • Tổng
  • Hiệu
  • Tích
  • Thương
Ví dụ:
Sum: 15
Sub: 5
Mul: 50
Div: 2

Điều kiện

  • Nếu a hoặc b không phải số → báo lỗi
  • Nếu chia cho 0 → báo lỗi riêng

Yêu cầu nâng cao

Trả kết quả dưới dạng HTML bảng:
  • phép tính
  • kết quả

PHẦN 5 — Response nâng cao hơn

Bài 11: Trả JSON thay vì text/html

Mục tiêu

Luyện server kiểu API cơ bản.

Yêu cầu

Tạo file server-json.js

Route /api/user

Trả JSON:
{
  "id": 1,
  "name": "Toan",
  "role": "student"
}

Route /api/products

Trả JSON mảng:
[
  { "id": 1, "name": "Laptop" },
  { "id": 2, "name": "Mouse" },
  { "id": 3, "name": "Keyboard" }
]

Route khác

Trả JSON lỗi:
{
  "error": "Not found"
}

Điều kiện

  • Phải dùng:
'Content-Type': 'application/json'
  • Dùng JSON.stringify(...)

Bài 12: Kết hợp HTML và JSON

Mục tiêu

Luyện 1 server, nhiều kiểu response.

Yêu cầu

Tạo file server-mix.js
Route Kiểu dữ liệu trả về
/ HTML
/about HTML
/api/info JSON
/api/time JSON
route khác text/plain hoặc HTML 404

Nội dung

  • /api/info trả tên project, version
  • /api/time trả thời gian hiện tại

PHẦN 6 — Đọc body request

Bài 13: Nhận dữ liệu từ POST request

Mục tiêu

Luyện phần khó hơn: đọc body bằng req.on('data') và req.on('end')

Yêu cầu

Tạo file server-post.js

Route /login

  • Method: POST
  • Client gửi body dạng text:
username=admin&password=123456

Server phải:

  1. đọc body
  2. in body ra console
  3. trả response:
Login data received

Yêu cầu nâng cao

Nếu body chứa:
  • username=admin
  • password=123456
thì trả:
Login success
ngược lại:
Login failed

Bài 14: Form HTML + xử lý submit

Mục tiêu

Làm mini website hoàn chỉnh.

Yêu cầu

Tạo file server-form.js

Route GET /

Trả HTML có form:
  • input name
  • input email
  • button submit
Form submit tới:
POST /submit

Route POST /submit

Server đọc body form và trả về:
<h1>Form Submitted</h1>
<p>Name: ...</p>
<p>Email: ...</p>

Yêu cầu thêm

Nếu thiếu name hoặc email:
  • trả status 400
  • hiển thị thông báo lỗi

PHẦN 7 — Mini project thực hành dài

Bài 15: Website công ty mini bằng HTTP module

Mục tiêu

Làm 1 project đủ dài, không quá khó.

Yêu cầu

Tạo file company-server.js Website có các route:

1. /

Trang chủ:
  • tên công ty
  • slogan
  • menu

2. /about

Giới thiệu công ty:
  • lịch sử
  • sứ mệnh
  • tầm nhìn

3. /services

Hiển thị danh sách dịch vụ:
  • Web Development
  • Mobile App
  • UI/UX Design

4. /contact

Hiển thị:
  • email
  • phone
  • address

5. /api/services

Trả JSON danh sách dịch vụ

6. /api/company

Trả JSON thông tin công ty

7. /not-exist

Trả trang 404 đẹp bằng HTML

Yêu cầu bắt buộc

  • Tất cả page HTML có menu chung
  • Có Content-Type đúng
  • Có status code đúng
  • Có log request ở console

Yêu cầu nâng cao

Trong /services, mỗi dịch vụ phải có link chi tiết:
  • /services/web
  • /services/mobile
  • /services/design

Bài 16: Student management mini server

Mục tiêu

Thực hành route, JSON, query, status code.

Yêu cầu

Tạo file student-server.js Tạo mảng dữ liệu trong code:
const students = [
  { id: 1, name: 'An', age: 20, major: 'IT' },
  { id: 2, name: 'Binh', age: 21, major: 'Business' },
  { id: 3, name: 'Cuong', age: 22, major: 'Design' }
];

Route cần làm

GET /students

Trả toàn bộ danh sách sinh viên

GET /students?id=2

Trả chi tiết sinh viên có id = 2

GET /students/search?major=IT

Lọc sinh viên theo ngành

GET /students/search?age=21

Lọc theo tuổi

Không tìm thấy

Trả:
{ "error": "Student not found" }

Yêu cầu nâng cao

Cho phép:
/students/search?major=IT&age=20
lọc đồng thời nhiều điều kiện.

Bài 17: Product catalog server

Mục tiêu

Bài này dài hơn, sát kiểu backend cơ bản.

Yêu cầu

Tạo file product-server.js Dữ liệu mẫu:
const products = [
  { id: 1, name: 'Laptop', price: 1500, category: 'electronics' },
  { id: 2, name: 'Phone', price: 800, category: 'electronics' },
  { id: 3, name: 'Table', price: 300, category: 'furniture' },
  { id: 4, name: 'Chair', price: 120, category: 'furniture' }
];

Tính năng

GET /products

Trả danh sách tất cả sản phẩm

GET /products/1

Trả chi tiết sản phẩm id 1

GET /products/category/electronics

Trả sản phẩm theo category

GET /products/search?min=100&max=900

Lọc sản phẩm theo khoảng giá

GET /products/search?name=lap

Tìm theo tên gần đúng

Yêu cầu nâng cao

  • Nếu không có sản phẩm → trả mảng rỗng hoặc 404, tùy bạn quy ước
  • Ghi rõ quy ước trong comment đầu file

PHẦN 8 — Bài tập khó hơn: thêm POST và quản lý dữ liệu tạm

Bài 18: Thêm sinh viên bằng POST

Mục tiêu

Thực hành:
  • đọc JSON body
  • parse dữ liệu
  • push vào mảng

Yêu cầu

Tạo file student-api.js Dữ liệu ban đầu:
let students = [
  { id: 1, name: 'An', age: 20 },
  { id: 2, name: 'Binh', age: 21 }
];

API cần làm

GET /students

Trả toàn bộ sinh viên

POST /students

Client gửi JSON:
{
  "name": "Cuong",
  "age": 22
}
Server phải:
  1. đọc body
  2. parse JSON
  3. tự sinh id
  4. thêm vào mảng
  5. trả JSON sinh viên vừa tạo

Yêu cầu validate

  • thiếu name hoặc age → 400
  • age không hợp lệ → 400

Bài 19: Update và delete đơn giản

Mục tiêu

Làm quen REST kiểu cơ bản bằng http module thuần.

Yêu cầu

Mở rộng tiếp từ student-api.js

API mới

PUT /students/2

Cập nhật sinh viên id 2

DELETE /students/2

Xóa sinh viên id 2

Yêu cầu

  • Nếu không tìm thấy id → trả 404
  • Nếu update thành công → trả đối tượng mới
  • Nếu delete thành công → trả thông báo thành công

Gợi ý

  • Tách URL để lấy id
  • Kiểm tra req.method

PHẦN 9 — Bài tổng hợp lớn

Bài 20: Xây mini backend không dùng Express

Mục tiêu

Đây là bài luyện dài nhất.

Yêu cầu

Tạo file app.js xây dựng server quản lý công việc todo Dữ liệu ban đầu:
let todos = [
  { id: 1, title: 'Learn Node.js', completed: false },
  { id: 2, title: 'Practice HTTP server', completed: true }
];

Chức năng phải có

1. GET /

Trả trang HTML giới thiệu API

2. GET /todos

Trả toàn bộ todo dưới dạng JSON

3. GET /todos/1

Trả chi tiết 1 todo

4. POST /todos

Thêm todo mới Body JSON:
{
  "title": "Do homework"
}

5. PUT /todos/1

Cập nhật title hoặc completed

6. DELETE /todos/1

Xóa todo

7. GET /todos/search?completed=true

Lọc theo trạng thái

8. GET /todos/search?keyword=learn

Tìm theo title

Yêu cầu bắt buộc

  • status code đúng
  • content-type đúng
  • xử lý lỗi rõ ràng
  • route không tồn tại phải có 404
  • body JSON sai format phải báo lỗi
  • console log mỗi request

Yêu cầu nâng cao

Tự tách code thành các hàm:
  • sendJson(res, statusCode, data)
  • sendText(res, statusCode, message)
  • parseBody(req)
  • notFound(res)

PHẦN 10 — Checklist test cho mọi bài

Mỗi bài thực hành xong, tự test theo checklist này:

Checklist 1

  • Server có chạy được không?
  • Có vào được localhost:3000 không?
  • Có bị treo do quên res.end() không?

Checklist 2

  • Header Content-Type đã đúng chưa?
  • Status code có đúng theo từng route chưa?

Checklist 3

  • Route sai có ra 404 không?
  • Method sai có ra 405 không?

Checklist 4

  • Query string thiếu có báo lỗi không?
  • Body gửi sai có xử lý lỗi không?

Checklist 5

  • Console có log request không?
 

Bài viết liên quan:

Giới thiệu tổng quan về ứng dụng Server Side
Cài đặt NodeJS trên môi trường windows

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Tìm hiểu Modules, Packages và Built-in Modules trong Node.js

Cài đặt NodeJS trên môi trường windows

khái niệm React Context và chia sẻ state qua các component với React Context

Định tuyến trong ứng dụng React với React Router

Xử lý tải dữ liệu bất đồng bộ (Async Data Loading), lazyload trong React

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×