Xây dựng URL trong Express
Trong bài viết này chúng ta sẽ cùng nhau đi tìm hiểu về cách xây dựng URL trong Express, phần này sẽ phụ thuộc rất nhiều về phần Routes trong Express, các bạn hãy tham khảo bài viết đó trước khi tiếp tục bài viết này nhé.
Trong Express bạn có thể khai báo đường dẫn cố định hoặc đường dẫn động, việc sử dụng đường dẫn động giúp chúng ta có thể điều hướng người dùng tới nhiều nơi hơn. Ví dụ ở đây mình có URL tĩnh:
https://example.com/admin
và đây là đường dẫn động:
https://example.com/posts/1 https://example.com/posts/2 https://example.com/posts/3
Nội dung bài viết sẽ chủ yếu tập chung ra những cách khởi tạo đường dân động (dynamic URL) .
Bài viết này được đăng tại [free tuts .net]
1. Đường dẫn tĩnh (Static URL)
Ở đây mình có một đường dẫn tĩnh, để khai báo trong Express bạn chỉ thêm chỉ định route patch là path mà bạn muốn khởi tạo. Chúng ta sẽ có ví dụ như sau :
var express = require('express'); var app = express(); app.get('/admin', function(req, res){ res.send('Admin Page'); }); app.listen(3000);
Tiến hành khởi chạy đường dẫn sẽ hiển thị như sau:
Đây là một phần khá đơn giản nên mình chỉ tập chung vào dynamic URL bên duới.
2. Đường dẫn động (Dymanic URL)
Route paths có thể là một string, string patterns hay regular express, chúng ta có thể khởi tạo một Dymanic URL bằng cách sử dụng regular express patch và string paterns.
Các ký tự như ?, +, * và () là cách ký tự regular express hay được sử dụng. Ký tự ngạch ngang (-) và chấm (.) được mặc định là một string-based path.
Route parameters
Tham số được đặt tên trong các phân đoạn URL được sử dụng để bắt các giá trị được chỉ định tại vị trí của chúng trong URL. Các giá trị đã ghi vào đối tượng req.params, với key của tham số tuyến được chỉ định trong đường dẫn, và value là giá trị tương ứng của chúng.
Route path: /users/:userId/books/:bookId Request URL: http://localhost:3000/users/34/books/8989 req.params: { "userId": "34", "bookId": "8989" }
Để chỉ định một route parameters chúng ta sử dụng cú pháp sau:
app.get('/users/:userId/books/:bookId', function (req, res) { res.send(req.params) })
Ngoài ra bạn còn có thể thêm pattern match cho router params :
app.get('/things/:id([0-9]{5})', function(req, res){ res.send('id: ' + req.params.id); });
Dưới đây mình có môt ví dụ:
var express = require('express'); var app = express(); app.get('/members/:memberID([0-9]{2})', function(req, res){ res.send(req.params); }); app.listen(3000);
Lưu ý rằng các params name phải là ký tự từ ([A-Za-z0-9_]).
Pattern Matched Routes
Bạn cũng có thể sử dụng string paterns trong paths, ở đây mình có một vài ví dụ :
Route này sẽ có path là acd hoặc abcd
app.get('/ab?cd', function (req, res) { res.send('ab?cd') })
Route này sẽ có path là abcd, abbcd, abbbcd,vv...
app.get('/ab+cd', function (req, res) { res.send('ab+cd') })
Route này sẽ có path là abcd, abxcd, abRANDOMcd, ab123cd,vv...
app.get('/ab*cd', function (req, res) { res.send('ab*cd') })
Route này sẽ có path là /abe và /abcde
app.get('/ab(cd)?e', function (req, res) { res.send('ab(cd)?e) })
Regular expressions Routes
Ngoài ra, bạn còn có thể sử dụng regular express trong path route. Ở đây mình có một vài ví dụ :
Chỉ match với kí tự a.
app.get(/a/, function (req, res) { res.send('/a/') })
Match với số điện thoại:
app.get('/phonenumbers/((09|03|07|08|05)+([0-9]{8}))', function(req, res){ res.send(req.params); });
Trong bài này chúng ta đã cùng nhau đi tìm hiểu về xây dựng URL trong Express, đây là kiến thức rất cơ bản về nó nhưng cũng hết sức quan trọng trong quá trình làm việc với Express. Mong rằng bài viết sẽ giúp ích cho bạn