【问题标题】:POST/PATCH works in LoopBack Explorer but not PostmanPOST/PATCH 在 LoopBack Explorer 中有效,但在 Postman 中无效
【发布时间】:2017-12-02 01:25:33
【问题描述】:

我正在构建一个 Angular 应用程序,它使用由 NodeJS 和 LoopBack 构建的 REST API。在尝试创建新记录时,我的应用程序和 Postman 中都出现了一个奇怪的错误。 (物业名称已更改以保护无辜者)

The `ObjectName` instance is not valid. 
Details: `id` can't be blank (value: undefined); 
`property2` can't be blank (value: undefined); 
`property3` can't be blank (value: undefined).

这是我发布的内容:

{
    "id":0,
    "property2":"foo",
    "property3":"bar",
    "property4":"R"
}

其中最奇怪的部分是,当我尝试通过 LoopBack API Explorer 运行它时,它运行良好。我对 PATCH 方法也有同样的问题。

有什么想法吗?

谢谢

【问题讨论】:

  • 如何通过邮递员发送数据,您可以发布屏幕截图或其他内容
  • @RahulSingh 我在正文选项卡中发送它,并选择了“原始”选项。这就是我一直使用 Postman 发送 json 数据的方式。我无法发布屏幕截图,因为我无法模糊敏感数据。
  • @ChrisHampton:你设置了标题(Content-TypeAccept)吗?当您通过 LoopBack API Explorer 发出请求时,它还会生成 curl 命令。那个 curl 命令对你有用吗?
  • @IvanSchwarz 我已经在 Postman 和我的 Angular 应用程序中设置了标题,但我得到了同样的错误。顺便说一句,curl 命令工作得很好。去图...
  • @ChrisHampton:如果您在 chrome 开发工具中打开网络选项卡,API Explorer/curl 发出的请求与 Postman/您的应用发出的请求有什么区别?

标签: node.js rest http-post loopback http-patch


【解决方案1】:

我找到了原因。在我使用过的以前的 API 中,后端设置了一个模型绑定器,该绑定器将应用它需要的属性并丢弃它不需要的属性。所以我通常会在 POST/PUTs/etc 中发送整个对象。在这种情况下,我们没有那个,所以它抛出了这个奇怪的错误。一旦我向我的 Angular 自动映射器添加了一个方法,该方法会将对象剥离到只剩下最基本的东西,它就可以正常工作了。

最后,如果错误消息更好,我本可以弄清楚的。

【讨论】:

    猜你喜欢
    • 2020-04-28
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多