NodeJS 如何在Express.js中传递URL中的字符串列表

8qgya5xd  于 2022-11-22  发布在  Node.js
关注(0)|答案(3)|浏览(129)

为了在URL中传递单个参数,我在Postman中使用了以下代码:
http://localhost:3000/api/prices/:shopId
这就对了!
现在,我想做的是,用购物ID列表替换购物ID。
你有什么想法,我如何才能做到这一点?
伪代码:
URL for shopId = 1: http://localhost:3000/api/prices/1
URL for shopId = 2: http://localhost:3000/api/prices/2
我应该怎么做才能在一个API响应中同时获得shopId 1和2?

ds97pgxw

ds97pgxw1#

最好的办法是传递数组中的元素,这些元素之间用一个字符分隔,该字符不会出现在任何单词中(例如逗号)。
以下面的代码片段为例:

app.get('api/prices/:ids', function(req, res){
    var ids = req.params.ids.split(',');
    console.log(ids); //['shopId1', 'shopdId2']
})

GET请求到达的端点:
http://localhost:3000/api/prices/shopId1,shopId2

xpcnnkqh

xpcnnkqh2#

对于你的要求,我可以想到几个替代方案,我觉得这是比你提到的更好的做法。
1.使用POSTPUT中的任何一个在正文中发送。
URL: http://localhost:3000/api/prices/shopIds
Body: { shopIds: [1, 2, 3, 4] }
您可以检索ID,

const { shopIds } = req.body // shopIds = [1, 2, 3, 4]

const shopIds = req.body.shopIds // shopIds = [1, 2, 3, 4]

1.如果要使用GET,则使用查询参数
URL: POST http://localhost:3000/api/prices/shopIds?ids=1,2,3,4
在这里,您可以检索字符串形式的ID,然后将它们转换为数组,

const ids = req.query.ids.split(','); // ids = [1 ,2, 3, 4]

如果你还想按你说的方法使用,那已经有答案了,就用那个方法吧!
希望这对你有帮助!

wlzqhblo

wlzqhblo3#

添加备选答案:

URL: GET http://localhost:3000/api/prices/shopIds?id=1&id=2&id=3&id=4

然后在你的快递中得到端点:

let ids = req.body.id

然而,id可能是一个字符串或列表,这取决于参数列表中是否有一个或多个id。不确定如何以一种好的方式处理这种情况。

相关问题