Lấy chính xác Params trên url khi dùng URL thân thiện
-
Đây là đoạn Router của mình
router.get('/alo/:test/:url-:id', detail.Detail)
URL của mình sẽ là http://localhost/alo/test/xin-chao-cac-ban-234
Và kết quả mình nhận được khi console.log ra là:
req.params.url = xin
req.params.id = chao-cac-ban-234Cho mình hỏi giờ làm thế nào để nó nhận chính xác ? Bên ASP.NET MVC mình làm như vậy nhưng nó nhận chính xác. Không biết bên Nodejs thì làm thế nào.
Mong mọi người giúp mình
-
Bạn cần phải nói rõ là tách riêng phần
String
với phầnID
chứ.
Đơn giản là bạn nên dùngrouter.get('/alo/test/:url/:id', detail.Detail)
Hoặc tách bằng :
router.get('/alo/test/:url-:id(\\d+)', detail.Detail)
-
Những lỡ đã dùng trước đây rồi thì sao hả bạn ?
VÍ dụ như website của mình trước đây xài ASP.NET dùng URL như vậy rồi. Giờ đổi thì phải chờ google nó Index lại. Bạn có cách nào giúp mình không ?
-
@Huy-Ha
router.get('/alo/test/:url-:id(\\d+)', detail.Detail)
nha bạn
-
@hidemanvn Cảm ơn bạn rất nhiều. Bạn có thể giải thích hộ mình cái (\d+) nghĩa là gì không ?
-
(\d+)
là chuỗi regexr làm mẫu so sánh cho paramsid
. Ở Express phải có thêm mâu tiền tố\
nên nó là(\\d+)
Regular expression
Cách dùng Regex
Express dùng regexr
-
@hidemanvn Cảm ơn bạn. Nhưng nếu :id là 1 chuỗi thì sao nhỉ?
-
@Huy-Ha \d+ chỉ khớp với số bạn nhé. Chuỗi là khái niệm rộng : số, ký tự, ký tực đặc biệt ... vậy nên nếu
:id == '1234'
thì router sẽ chạy callback tương tứng. Còn nếuid=='1234a'
thì fail nhé, nó sẽ chuyển tới route khác bao giờ khớp thì thôi, ko tìm đc express tự động trả về lỗi 404
-
@hidemanvn ý mình là ví dụ giờ url sẽ là
/xin-chao-cac-ban
Thì tớ muốn lấy xin-chao và cac-ban thì tớ làm như thế nào ý.
Xin-chao tương ứng vs :url
Cac-ban sẽ tương ứng với :id
-
Nếu tách 4 ra 2 nhóm thì
:url(\\w+-\\w+)-:id(\\w+-\\w+)
-
@hidemanvn said in Lấy chính xác Params trên url khi dùng URL thân thiện:
(\w+-\w+)
Hổng được bạn ơi. T.T. Cậu có thể cho tớ facebook hay Skype của cậu được không ? Tớ mới nhập môn Nodejs nên có nhiều điều tớ muốn hỏi lắm. Không ai hướng dẫn tớ cả. Toàn tự mò học.