【问题标题】:How to produce URL from router path and params in node.js如何从 node.js 中的路由器路径和参数生成 URL
【发布时间】:2015-08-04 10:07:59
【问题描述】:

假设我有一个“路由器路径”(不确定该术语究竟是什么),它被传递给 express/restify 以注册一个路由(例如,'/category/:id')和一个参数对象{ id: 1234 }。如何将它们组合成 URL '/category/1234',有没有可以做到的 npm 包?

【问题讨论】:

  • 你把它们组合起来是为了什么?它在中间件内吗?您是将此中间件用于各种路径,还是仅用于类别?参数总是id吗?您只是在寻找实际调用的路径吗?
  • 目的很复杂,解释起来很复杂,但这不在中间件内,我也不是在寻找实际调用的路径:)当然'category'和'id'是只是例子,我正在寻找一个通用的解决方案:)
  • 我正在寻找类似于 ES6 的这种路径样式的字符串插值,因此 somePackage('/category/:id', {id: id}) 应该给出与 `/category/${id}` 相同的结果。我要找的是somePackage()
  • 我不知道存在的包,但是当我帮助别人完成后,我可以给你写一个函数:)

标签: node.js url routes


【解决方案1】:

给定 rout 的路径(字符串)和您的 params 对象,您可以使用此函数生成路径:

function replace_tokens(string,data){
    var keys = Object.keys(data);
    for(var i in keys){
        string = string.replace(":" + keys[i],data[keys[i]]);
    }
    return string;
}

【讨论】:

  • 谢谢,一个不错的解决方案:)
  • 不客气。不要忘记接受答案。
【解决方案2】:

我还发现restify does have a utility(超媒体小节)与server.router.render(routeName, params, queryString) 完成了类似的工作。也许在某些情况下它会很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多