Cách xác định các tuyến và phương thức yêu cầu HTTP trong Express
Bài viết này sẽ xem xét cách xử lý các tuyến và phương thức yêu cầu HTTP trong một dự án Express. Các tuyến xử lý chuyển của user đến các URL khác nhau trong ứng dụng của bạn. HTTP, viết tắt của Hyper Text Transfer Protocol , giao tiếp và tạo điều kiện cho dữ liệu từ server Express của bạn đến trình duyệt web. Bạn sẽ học cách xác định các tuyến và sử dụng các phương thức yêu cầu HTTP GET
, POST
, PUT
và DELETE
để thao tác dữ liệu.
Yêu cầu
Để hoàn thành hướng dẫn này, hiểu biết về Node.js là hữu ích nhưng không bắt buộc. Nếu bạn muốn tìm hiểu thêm về Node.js, hãy xem loạt bài Cách viết mã trong Node.js.
Cài đặt dự án của bạn
Vì Express là một khung Node.js, hãy đảm bảo bạn đã cài đặt Node.js từ Node.js trước khi thực hiện các bước tiếp theo. Chạy phần sau trong terminal của bạn:
Tạo một folder mới có tên node-express-routing
cho dự án của bạn:
- mkdir node-express-routing
Thay đổi vào folder mới:
- cd node-express-routing
Khởi tạo một dự án Node mới với các giá trị mặc định. Điều này sẽ bao gồm file package.json
của bạn để truy cập các phần phụ thuộc của bạn:
- npm init -y
Tạo file mục nhập của bạn, index.js
. Đây là nơi bạn sẽ xử lý các tuyến đường và phương thức yêu cầu HTTP của bạn :
- touch index.js
Cài đặt cả Express và nodemon
làm phụ thuộc. Bạn sẽ sử dụng nodemon
để liên tục khởi động lại dự án Express của bạn khi nào index.js
thay đổi.
- npm install express --save
- npm install -D nodemon
Mở file package.json
của bạn bằng editor bạn muốn và cập nhật tập lệnh start
của bạn để bao gồm nodemon
và index.js
của bạn:
{ "name": "node-express-routing", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "nodemon index.js" }, "keywords": [], "author": "Paul Halliday", "license": "MIT" }
Điều này sẽ cho phép bạn sử dụng lệnh npm start
trong terminal của bạn để chạy server Express và cập nhật các thay đổi.
Đến đây bạn đã cài đặt dự án của bạn và cấu hình nodemon
để làm mới khi nó phát hiện các thay đổi trong index.js
của bạn, bạn đã sẵn sàng khởi động server Express của bạn .
Khởi động server Express của bạn
Server Express của bạn là nơi bạn sẽ xử lý logic để tích hợp các tuyến đường và phương thức yêu cầu HTTP. Bạn sẽ cài đặt và chạy server của bạn để trực quan hóa dự án của bạn trong trình duyệt.
Để khởi động server Express của bạn, hãy yêu cầu Express trong index.js
của bạn và lưu trữ một version vào biến app
. Sau đó, khai báo một biến PORT
và chỉ định địa chỉ :3000
.
const express = require('express'); const app = express(); const PORT = 3000; app.use(express.json()); app.listen(PORT, () => console.log(`Express server currently running on port ${PORT}`));
Tiếp theo, nối .listen()
vào app
và chèn PORT
làm đối số đầu tiên, sau đó là hàm gọi lại. Phần mềm trung gian Express .listen()
tạo một trình duyệt local từ địa chỉ trong biến PORT
của bạn để trực quan hóa các thay đổi .
Cũng bao gồm express.json()
làm đối số cho app.use()
. Điều này là để phân tích cú pháp thông qua dữ liệu đến thông qua các yêu cầu HTTP của bạn. Một version trước đó dựa trên dependencies của body-parser
, nhưng kể từ đó Express đã bao gồm một phần mềm trung gian được tích hợp sẵn để phân tích dữ liệu.
Chạy lệnh sau trong terminal của bạn để bắt đầu dự án:
- npm start
Dự án của bạn được tải trên http://localhost:3000
. Điều hướng đến trình duyệt của bạn và nhận thấy những điều sau:
Đây là phần khởi đầu của một version Express đang chạy. Hãy làm việc để xác định các phương thức HTTP để điền vào trình duyệt của bạn.
Xác định phương thức yêu cầu HTTP GET
của bạn
Để xem dự án của bạn , bạn có thể gửi thông tin từ server Express của bạn thông qua yêu cầu GET
, một phương thức HTTP.
Trong index.js
, hãy thêm .get()
vào biến app
của bạn, chỉ định một tuyến ẩn danh và bao gồm một lệnh gọi lại truy cập các đối số request
và response
:
app.get('/', (request, response) => { response.send('Hello'); });
Đối số request
chứa thông tin về yêu cầu GET
, trong khi response.send()
gửi dữ liệu đến trình duyệt. Dữ liệu trong response.send()
có thể là một chuỗi, đối tượng hoặc một mảng.
Đến đây bạn đã triển khai một yêu cầu GET
, hãy xem xét các tuyến và các phương thức HTTP khác.
Hiểu các tuyến đường
Tạo các yêu cầu GET
mới trong index.js
của bạn và xác định các tuyến '/accounts'
và '/accounts/:id'
. Khai báo một mảng accounts
với một số dữ liệu giả:
let accounts = [ { "id": 1, "username": "paulhal", "role": "admin" }, { "id": 2, "username": "johndoe", "role": "guest" }, { "id": 3, "username": "sarahjane", "role": "guest" } ]; app.get('/accounts', (request, response) => { response.json(accounts); }); app.get('/accounts/:id', (request, response) => { const accountId = Number(request.params.id); const getAccount = accounts.find((account) => account.id === accountId); if (!getAccount) { response.status(500).send('Account not found.') } else { response.json(getAccount); } });
Nếu bạn chuyển đến http://localhost:3000/accounts
bạn sẽ nhận được tất cả các account trong mảng của bạn :
Output[ { "id": 1, "username": "paulhal", "role": "admin" }, { "id": 2, "username": "johndoe", "role": "guest" }, { "id": 3, "username": "sarahjane", "role": "guest" } ]
Bạn cũng có thể lọc ID account bằng cách sử dụng điểm cuối /:id
. Express coi ID trong endpoint /:id
là trình giữ chỗ cho tham số user và trùng với giá trị đó.
Khi bạn chuyển đến http://localhost:3000/accounts/3
, bạn sẽ nhận được một account phù hợp với tham số /:id
:
Output{ "id": 3, "username": "sarahjane", "role": "guest" }
Thiết kế các phương thức yêu cầu HTTP POST
, PUT
và DELETE
Các phương thức HTTP cung cấp chức năng bổ sung cho dữ liệu bằng cách sử dụng các yêu cầu POST
, PUT
và DELETE
. Phương thức yêu cầu POST
tạo dữ liệu mới trong server của bạn, trong khi PUT
cập nhật thông tin hiện có. Phương thức yêu cầu DELETE
loại bỏ dữ liệu được chỉ định.
POST
Để tạo dữ liệu mới trong mảng accounts
, bạn có thể tích hợp phương thức yêu cầu POST
.
Trong index.js
, hãy thêm .post()
vào biến app
của bạn và bao gồm tuyến '/accounts'
làm đối số đầu tiên:
app.post('/accounts', (request, response) => { const incomingAccount = request.body; accounts.push(incomingAccount); response.json(accounts); })
Bạn sẽ đẩy mọi dữ liệu đến từ yêu cầu POST
của bạn vào mảng accounts
và gửi phản hồi dưới dạng đối tượng JSON.
Mảng accounts
của bạn hiện có một user mới:
Output[ { "id": 1, "username": "paulhal", "role": "admin" }, { "id": 2, "username": "johndoe", "role": "guest" }, { "id": 3, "username": "sarahjane", "role": "guest" }, { "id": 4, "username": "davesmith", "role": "admin" } ]
PUT
Bạn có thể chỉnh sửa và cập nhật một account cụ thể thông qua yêu cầu PUT
.
Trong index.js
, hãy thêm .put()
vào biến app
của bạn và bao gồm tuyến đường '/accounts/:id'
làm đối số đầu tiên. Bạn sẽ tìm thấy ID account đã nhập và đặt điều kiện để cập nhật dữ liệu mới:
app.put('/accounts/:id', (request, response) => { const accountId = Number(request.params.id); const body = request.body; const account = accounts.find((account) => account.id === accountId); const index = accounts.indexOf(account); if (!account) { response.status(500).send('Account not found.'); } else { const updatedAccount = { ...account, ...body }; accounts[index] = updatedAccount; response.send(updatedAccount); } });
Đến đây bạn có thể cập nhật dữ liệu trong mảng accounts
. Nếu user thay đổi "role"
của họ:
{ "role": "guest" }
Lưu ý "role"
cập nhật cho guest
từ admin
trong http://localhost:3000/accounts/1
:
Output{ "id": 1, "username": "paulhal", "role": "guest" }
DELETE
Bạn có thể xóa user và dữ liệu bằng phương pháp yêu cầu DELETE
.
Trong index.js
, hãy thêm .delete()
vào biến app
của bạn và bao gồm '/accounts/:id'
làm đối số đầu tiên. Bạn sẽ lọc qua mảng accounts
và trả lại account để xóa.
app.delete('/accounts/:id', (request, response) => { const accountId = Number(request.params.id); const newAccounts = accounts.filter((account) => account.id != accountId); if (!newAccounts) { response.status(500).send('Account not found.'); } else { accounts = newAccounts; response.send(accounts); } });
Nếu bạn gửi một yêu cầu DELETE
đến http://localhost:3000/accounts/1
, điều này sẽ xóa account có /:id
là 1 khỏi mảng accounts
.
Kết luận
Việc chỉ định các tuyến đường và sử dụng các phương thức yêu cầu HTTP hỗ trợ để tạo thêm hiệu suất khi tạo, cập nhật và xóa user và dữ liệu trong server Express của bạn.
Các tin liên quan