Thứ sáu, 04/05/2018 | 00:00 GMT+7

server Express cơ bản trong Node.js


Express là một khuôn khổ ứng dụng web cho Node.js cho phép bạn tạo ra các API và web server mạnh mẽ theo cách dễ dàng và sạch sẽ hơn nhiều. Nó là một gói nhẹ không che khuất các tính năng cốt lõi của Node.js. Trong bài đăng này, ta sẽ giới thiệu cho các bạn cách cài đặt một web server rất cơ bản.

Cài đặt

Express rất đơn giản để cài đặt. Chỉ cần cài đặt nó qua npm như bạn làm với bất kỳ gói nào khác.

$ npm install express --save

Sử dụng

Bây giờ Express đã được cài đặt, đây là giao diện của server cơ bản nhất:

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

app.get('/', (req, res) => {
    res.send('An alligator approaches!');
});

app.listen(3000, () => console.log('Gator app listening on port 3000!'));

Bây giờ, chạy tập lệnh này và chuyển đến localhost:3000 trong trình duyệt của bạn. Bạn sẽ thấy thông báo An alligator approaches! trong cửa sổ trình duyệt của bạn!

Hãy xem qua từng phần của mã này để giải thích cách Express hoạt động.

Giải trình

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

Dòng đầu tiên ở đây là lấy module Express chính từ gói bạn đã cài đặt. Mô-đun này là một hàm, sau đó ta chạy trên dòng thứ hai để tạo biến app của ta . Bạn có thể tạo nhiều ứng dụng theo cách này, mỗi ứng dụng có yêu cầu và phản hồi riêng.

app.get('/', (req, res) => {
    res.send('An alligator approaches!');
});

Đoạn mã này là nơi ta thông báo cho server Express của bạn cách xử lý yêu cầu GET tới server của ta . Express bao gồm các chức năng tương tự cho POST , PUT , v.v. bằng app.post(...) , app.put(...) , v.v.

Các hàm này có hai tham số chính. Đầu tiên là URL để chức năng này hoạt động. Trong trường hợp này, ta đang nhắm đến '/' , là folder root của trang web của ta : trong trường hợp này là localhost:3000 .

Tham số thứ hai là một hàm có hai đối số: reqres . req đại diện cho yêu cầu đã được gửi đến server ; Ta có thể sử dụng đối tượng này để đọc dữ liệu về những gì khách hàng đang yêu cầu thực hiện. res đại diện cho phản hồi mà ta sẽ gửi lại cho khách hàng. Ở đây, ta đang gọi một hàm trên res để gửi lại phản hồi: 'An alligator approaches!' .

app.listen(3000, () => console.log('Gator app listening on port 3000!'));

Cuối cùng, khi ta đã cài đặt xong các yêu cầu của bạn , ta phải khởi động server của bạn ! Ta đang chuyển 3000 vào chức năng listen , cho ứng dụng biết cổng nào để nghe. Hàm được truyền vào dưới dạng tham số thứ hai là tùy chọn và chạy khi server khởi động. Điều này chỉ cung cấp cho ta một số phản hồi trong console để biết rằng ứng dụng của ta đang chạy.

Và ta có nó, một web server cơ bản! Tuy nhiên, ta chắc chắn muốn gửi nhiều hơn chỉ một dòng văn bản trở lại khách hàng. Hãy trình bày ngắn gọn phần mềm trung gian là gì và cách cài đặt server này như một server file tĩnh!

Phần mềm trung gian

Với Express, ta có thể viết và sử dụng các chức năng phần mềm trung gian , có quyền truy cập vào TẤT CẢ các yêu cầu http đến server . Các chức năng này có thể:

  • Thực thi bất kỳ mã nào.
  • áp dụng các thay đổi đối với yêu cầu và các đối tượng phản hồi.
  • Kết thúc chu kỳ yêu cầu-phản hồi.
  • Gọi hàm phần mềm trung gian tiếp theo trong ngăn xếp.

Ta có thể viết các chức năng phần mềm trung gian của riêng mình hoặc sử dụng phần mềm trung gian của bên thứ ba bằng lệnh chúng giống như cách ta làm với bất kỳ gói nào khác. Hãy bắt đầu bằng cách viết phần mềm trung gian của riêng ta , sau đó ta sẽ thử sử dụng một số phần mềm trung gian hiện có để phục vụ các file tĩnh.

Để xác định một chức năng phần mềm trung gian, ta gọi app.use() và chuyển cho nó một hàm. Đây là một chức năng cơ bản của phần mềm trung gian để in thời gian hiện tại trong console trong mọi yêu cầu:

app.use((req, res, next) => {
    console.log('Time: ', Date.now());
    next();
});

Lời gọi next() yêu cầu phần mềm trung gian chuyển đến chức năng phần mềm trung gian tiếp theo, nếu có. Điều này rất quan trọng phải bao gồm ở cuối chức năng của ta - nếu không, yêu cầu sẽ bị kẹt trên phần mềm trung gian này.

Ta có thể tùy chọn chuyển một đường dẫn đến phần mềm trung gian, phần mềm này sẽ chỉ xử lý các yêu cầu đến đường dẫn đó. Ví dụ:

app.use('/nest', (req, res, next) => {
    console.log('Request type: ', req.method);
    next();
});

Bằng cách truyền '/nest' làm đối số đầu tiên cho app.use() , hàm này sẽ chỉ chạy cho các yêu cầu được gửi đến localhost:3000/nest .

Bây giờ, hãy thử sử dụng phần mềm trung gian hiện có để phục vụ các file tĩnh. Express đi kèm với một chức năng phần mềm trung gian được tích hợp sẵn: express.static . Ta cũng sẽ sử dụng chức năng phần mềm trung gian của bên thứ ba, serve-index , để hiển thị danh sách index các file của ta .

Đầu tiên, bên trong cùng một folder nơi đặt server express, hãy tạo một folder có tên là public và đặt một số file vào đó ( các file nào cũng được, có lẽ là một số hình ảnh của gator ).

Sau đó, cài đặt serve-index gói:

$ npm install serve-index --save

Nhập gói serve-index ở đầu file server của ta :

const serveIndex = require('serve-index');

Bây giờ, hãy bao gồm các phần mềm trung gian express.staticserveIndex và cho chúng biết đường dẫn để truy cập từ đó và tên folder của ta :

app.use('/gators', express.static('public'))
app.use('/gators', serveIndex('public'))

Bây giờ, khởi động lại server của bạn và chuyển đến localhost:3000/gators . Bạn sẽ thấy danh sách tất cả các file của bạn !

Ở đó ta có nó, một server Express cơ bản sử dụng Node.js. Để tìm hiểu thêm về Express, họ có nhiều hướng dẫn và tài liệu trên trang web của họ: expressjs.com


Tags:

Các tin liên quan

Thiết lập server ban đầu với Ubuntu 18.04
2018-04-27
Tự động thiết lập server ban đầu với Ubuntu 18.04
2018-04-27
Bắt đầu với kết xuất phía server bằng Nuxt.js
2018-04-16
Cách bảo vệ server của bạn trước lỗ hổng Meltdown và Spectre
2018-01-10
Sơ lược về lịch sử Linux
2017-10-27
Cách thiết lập Shiny Server trên Ubuntu 16.04
2017-10-25
Cách thiết lập server lưu trữ đối tượng bằng Minio trên Ubuntu 16.04
2017-08-30
Cách chạy server MongoDB an toàn với OpenVPN và Docker trên Ubuntu 16.04
2017-03-24
Kết xuất phía server cơ bản với Vue.js và Express
2017-03-14
Cách thiết lập server VPN IKEv2 với StrongSwan trên Ubuntu 16.04
2017-02-17