Nhiều khi chúng ta có nhu cầu tạo ra một server đơn giản để serve files html/json phục vụ cho việc test. Một ví dụ đơn giản như là tạo ra server để test file HTML được encoding dưới dạng EUC-JP - một chuẩn encoding cũ của Nhật Bản. Trong khi file JSON (JavaScript Opbject Notation - https://www.json.org/) lại dưới dạng UTF-8.

Server như vậy có thể tạo ra rất đơn giản với NodeJS, dùng 2 gói npm packageconnectserve-static.

Cài đặt

Tạo ra một thư mục mới rồi cài đặt 2 gói trên:

mkdir test_static_server && cd test_static_server
npm install connect
npm install serve-static

Tạo ra file server.js với nội dung:

const connect = require('connect');
const serveStatic = require('serve-static');
connect().use(serveStatic(__dirname, {
    setHeaders: function(res, path, stat) {
        if (serveStatic.mime.lookup(path) === 'application/json') {
        res.setHeader('Content-Type', 'application/json');
    } else {
        res.setHeader('Content-Type', 'text/html; charset=EUC-JP');
    }
 }
})).listen(8080, function() {
    console.log('Server running on 8080...');
});

Chạy với lệnh:

 node server.js

Nếu không có lỗi thì server của chúng ta có thể nhận request qua cổng 8080. Như trong đoạn code, chúng ta đã:

  • Tạo một HTTP server để GET static files

  • Files GET được là bất kỳ file nào trong thư mục gốc cùng với file server.js (Do config dùng biến __dirname)

  • Thiết lập header riêng cho từng loại file:

    • Nếu là file JSON: chỉ đặt header Content-Typeapplication/json.

    • Nếu là file khác (text, html), thêm encoding EUC-JP.

  • Ví dụ đặt file test.html vào thư mục gốc -> có thể hiển thị file này thông qua URL: http://localhost:8080/test.html

  • Ví dụ đặt file test.json vào thư mục gốc -> có thể hiển thị file này thông qua URL: http://localhost:8080/test.json

Có một số config nữa cho static-server này, chúng ta có thể tham khảo thêm trên trang chủ GitHub.

NodeJS đặc biệt thú vị vì chúng ta có thể tạo ra một con server chỉ với vài dòng code như trên.