在 URI 中包含斜杠字符“/”的标识符

Posted

技术标签:

【中文标题】在 URI 中包含斜杠字符“/”的标识符【英文标题】:Identifier containing slash character '/' into the URI 【发布时间】:2016-10-11 10:18:50 【问题描述】:

我正在使用 ExpressmongodbAngular 创建一个应用程序,我在 MongoDB 中的一个文档的标识符为 _id = '20161007/COMPANY-00/CL/01-01'

我正在尝试使用标识符通过 REstful API 从 Angular 获取数据:

var _id = '20161007/COMPANY-00/CL/01-01';

this.$http.get('/api/datadays/' + _id)
      .then(response => ....

但结果是:

angular.js:11881 获取 http://localhost:9000/api/datadays/20161007/COMPANY-00/CL/01-01404 (未找到)

有没有办法在标识符中使用斜杠来与 node/express 中的 restful API 一起工作?

谢谢

【问题讨论】:

【参考方案1】:

你应该看看Encode URI Component和Decode URI Component。

前端代码:

var _id = encodeURIComponent('20161007/COMPANY-00/CL/01-01');

this.$http.get('/api/datadays/' + _id)
      .then(response => ....

后端代码:

app.get('/api/datadays/:id', function(req, res) 
  let id = decodeURIComponent(req.params.id)
  ...
)

【讨论】:

以上是关于在 URI 中包含斜杠字符“/”的标识符的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 Template Toolkit 中包含非法标识符字符的哈希键?

在http请求中包含了哪些信息

为啥标识符可以在 C 中包含“$”? [复制]

如何连接相对路径或生成嵌套文件夹中包含的唯一标识符 svg?

JavaScript 转义字符

encodeURI()和encodeURIComponent() 区别