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

时间:2019-02-18 21:01:28

标签: node.js express postman

要在URL中传递单个参数,请在Postman中使用以下内容:

http://localhost:3000/api/prices/:shopId

那行得通!

现在,我要做的是将shopId替换为 shopId列表

对如何实现此目标有任何想法吗?


伪代码:

URL for shopId = 1: http://localhost:3000/api/prices/1

URL for shopId = 2: http://localhost:3000/api/prices/2

我应该怎么做才能在单个API响应中同时获取shopId 1和2?

2 个答案:

答案 0 :(得分:2)

您最好的选择是传递数组中的元素,这些元素用一个不会出现在任何单词(例如,逗号)中的字符分隔。

以以下代码段为例:

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

答案 1 :(得分:1)

根据您的要求,我可以考虑几种替代方法,我认为这些替代方法比您提到的要好。

  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]

如果您仍想按您提到的方式使用它,那么它已经被回答。使用该方法!

希望这会有所帮助!