是否存在用于解析URL路径段(矩阵)参数的javascript库?

是否存在用于解析URL路径段(矩阵)参数的javascript库?,javascript,parsing,url,uri,url-parsing,Javascript,Parsing,Url,Uri,Url Parsing,给定URL: var urlString = "http://somehost:9090/cars;color=red;make=Tesla?page=1&perPage=10" 我想要一些javascript(节点)库,我可以用它来获取汽车路径段的矩阵参数(颜色和品牌),例如: var url = URL.parse(urlString) url.pathSegments["cars"].params 会让步 { "color": "red", "make": "Tesla

给定URL:

var urlString = "http://somehost:9090/cars;color=red;make=Tesla?page=1&perPage=10"
我想要一些javascript(节点)库,我可以用它来获取汽车路径段的矩阵参数(颜色和品牌),例如:

var url = URL.parse(urlString)
url.pathSegments["cars"].params
会让步

{
  "color": "red",
  "make": "Tesla"
}
此外,理想情况下,这样的库应该考虑对路径段参数进行适当的解码,这与查询参数的解码不同

下面的文章将更详细地描述这些参数(以及一系列其他有关URL的有用信息):

我在谷歌上搜索了很多次,但结果都是空的,希望我只是瞎了眼

我找到了。但是,如果您不想使用该库,我认为该函数将满足您的要求(不太确定
decodeURIComponent
):

您也可以使用我在上面的评论中发布的内容,而不是正则表达式:

urlString.split("?")[0].split("/").pop().split(";").reduce( /* etc */)

现在我想要一个Tesla…

我最近编写了一个Node.js中间件,用于解析矩阵参数。 我已经指定了它遵循的规则以及它生成的输出格式

例如,下面是您的app.js的外观:

let app = require ('express') (),
  matrixParser = require ('matrix-parser');

app.use (matrixParser ());

app.get ('/cars*', (req, res) => {
  //notice the asterisk after '/cars'
  console.log (JSON.stringify (req.matrix, null, 2));
  res.send ('Thanks=)');
});

app.listen (9090);
您的URI如下所示:

let app = require ('express') (),
  matrixParser = require ('matrix-parser');

app.use (matrixParser ());

app.get ('/cars*', (req, res) => {
  //notice the asterisk after '/cars'
  console.log (JSON.stringify (req.matrix, null, 2));
  res.send ('Thanks=)');
});

app.listen (9090);
http://localhost:9090/cars;颜色=红色;make=Tesla?第1页和第10页

然后,您可以使用curl测试矩阵解析器功能,如:

curl”http://localhost:9090/cars;颜色=红色;品牌=特斯拉?页码=1,每页=10“

然后将
req.matrix
设置为以下对象:

[
  {
    "segment": "cars",
    "matrix": {
      "color": "red",
      "make": "Tesla"
    }
  }
]
查询字符串(页面,每页)保持不变(您只需编写
req.query
,就可以看到这一点)

在这一点上写一个答案可能已经太晚了,但它可能在将来会很容易得到

以下是回购协议:


编辑:很抱歉之前没有提供一个更详细的代码答案,这是我的第一个贡献,因此,我将花一些时间来掌握它。

不是完整的答案(没有编码/etc内容),而是
urlString.split(“?”[0]。split(“/”).pop().split(“;”).reduce(函数(p,c){var t=c.split(=”);if(t.length>1){p[t[0]=t[1];)返回p;},{})应该为您发布的内容提供技巧。感谢您发布代码,尽管我更喜欢使用库,因此不必维护它:P我查看了URI.js的文档,但没有找到任何解析矩阵参数的内容。它们非常支持解析查询参数,但据我所知,它们不支持矩阵=(搜寻还在继续!不幸的是,我发现了向URI.js添加矩阵参数支持的功能请求,因此我对文档的浏览并不缺乏。对于那些希望跟踪的人来说,功能请求的问题在于:谢谢,看起来很有希望,我必须评估它如何处理矩阵参数键和值的编码/解码有空余时间。当然。如果有任何混乱或您认为某些部分可以改进,请告诉我
npm install matrix-parser