【问题标题】:Request Param truncated请求参数被截断
【发布时间】:2014-12-31 14:02:12
【问题描述】:

我只是在学习使用 express、angular 和 mongoose 构建 web 应用程序。

我的角度控制器传递 url "/contact/54a153243aac91fc28605b0b" 最后一位是我的 mongo 数据库中记录的 _id。

在服务器端,我在 url 前面加上 /api,这样有效的 url 就是“/api/contact/54a153243aac91fc28605b0b

当我在服务器端访问参数时,我希望得到“54a153243aac91fc28605b0b”作为 req.param.id,但我只是得到“54”。

有趣的是,如果我直接在浏览器的地址栏输入以下内容,我就能得到完整的 ID。 IE。如果我输入“http://localhost:3000/api/contact/54a153243aac91fc28605b0b”在这种情况下,我也会得到预期的 JSON 响应。

我正在努力调试这个。任何提示。请帮忙。

【问题讨论】:

  • 如何添加网址?
  • 你能输出所有的参数吗?另外,在控制台中检查您要发送的数据。
  • @VsevolodGoloviznin 我在 URL 前面加上语句 'app.use('/api',api)'
  • @SoluableNonagon 我记录了所有参数,当我记录 _id 时,我得到的只是“54”而不是“54a153243aac91fc28605b0b”
  • 好吧,现在你必须追溯它的起源,看看它从长键到短键的变化......那么你应该有你的答案。

标签: angularjs node.js mongodb express mongoose


【解决方案1】:

在 express app.use 方法中不会在 URL 前添加任何内容。它用于为适当的 url 应用中间件。

所以,如果您有app.use('/api',api),那么您应该始终使用以/api 开头的网址访问它。

这就是您的 Angular 代码无法按预期工作的原因。你应该有完整的 url,包括 /api 部分。

【讨论】:

  • 谢谢!我会尝试看看出了什么问题。但是 req.originalUrl 记录了以下 /api/contact/54 而不是 /api/contact/54a153243aac91fc28605b0b 所以,我设法获得了正确的 URL,但是参数被截断了。我尝试传递十进制而不是十六进制,并且该链接有效。我正在调试,会更新。
【解决方案2】:

我找到了参数被截断的原因。在我的代码中的某个位置,我正在执行“parseInt($routeParams.id, 10)”,这导致十六进制 id 被截断为小数。

感谢您的支持!

~基山

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2014-05-14
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多