Helpex - Trao đổi & giúp đỡ Đăng nhập
6

Trong Express.js 4.14, tôi có tuyến đường sau:

app.get('/show/:name/:surname?/:address?/:id/:phone?', function(req, res) {
    res.json({
        name: req.params.name,
        surname: req.params.surname,
        address: req.params.address,
        id: req.params.id,
        phone: req.params.phone
    });
});

Nếu tôi yêu cầu localhost: 3000 / show / luis / cameojas / California / 123/456, tôi sẽ nhận được:

{"name":"luis","surname":"arriojas","address":"California","id":"123","phone":"456"}

Mọi thứ đều ổn với điều đó, nhưng nếu tôi yêu cầu localhost: 3000 / show / luis / California / 123, tôi sẽ nhận được:

{"name":"luis","surname":"California","id":"123"}

Làm cách nào để lấy "California" dưới dạng req.params.address thay vì req.params.surname?

6 hữu ích 1 bình luận 14k xem chia sẻ
11
app.get('/show/:name/:id/', function(req, res) {
    res.json({
        name: req.params.name,
        surname: req.query.surname,
        address: req.query.address,
        id: req.params.id,
        phone: req.query.phone
    });
});

Nếu tôi yêu cầu localhost:3000/show/luis/123?surname=arriojas&address=California&phone=456, bạn sẽ nhận được:

{"name":"luis","surname":"arriojas","address":"California","id":"123","phone":"456"}

và nếu bạn yêu cầu localhost:3000/show/luis/123&address=California, bạn sẽ nhận được:

{"name":"luis","surname":undefined, "address":"California","id":"123","phone":undefined}
11 hữu ích 1 bình luận chia sẻ
5

Bạn có nhiều tham số tùy chọn liên tiếp trong URL của mình. Khi bạn nhấn localhost: 3000 / show / luis / California / 123, express không có cách nào để biết bạn định bỏ qua thông số nào và giữ lại thông số nào. Nó đã kết thúc việc gán các tham số từ trái sang phải, bỏ qua việc gán tham số tùy chọn không thỏa mãn cuối cùng.

Để giải quyết vấn đề này, bạn có thể thay đổi thiết kế chương trình của mình để chấp nhận tất cả các tham số dưới dạng chuỗi truy vấn thay vì tham số url. Trong trường hợp đó, bạn sẽ truy cập API của mình bằng 'localhost: 3000 / show? Name = luis & address = California & id = 123', và mã của bạn giống như sau:

app.get('/show', function(req, res) {
    res.json({
        name: req.query.name,
        surname: req.query.surname,
        address: req.query.address,
        id: req.query.id,
        phone: req.query.phone
    });
});

Tuy nhiên, nếu bạn muốn sử dụng các tham số url, bạn sẽ phải chèn một thành phần đường dẫn bắt buộc giữa các thành phần tùy chọn. Cái gì đó như,

app.get('/show/:name/:surname?/at/:address?/:id/:phone?', function(req, res) {

Bây giờ, bạn sẽ truy cập API của mình dưới dạng 'localhost: 3000 / show / luis / at / California / 123'. Ở đây, bằng cách biết vị trí của 'at' trong url, express sẽ chỉ định chính xác 'California' cho địa chỉ thay vì họ.

5 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript node.js express , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading