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-234

    Cho 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ầnString với phần ID chứ.
    Đơn giản là bạn nên dùng router.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 params id. Ở 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ếu id=='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.


Log in to reply