【问题标题】:Postman 400 Bad Request for web ApiPostman 400 Web API 的错误请求
【发布时间】:2019-06-21 22:46:12
【问题描述】:

为了观看培训视频,我构建/运行了一个非常基本的 webApi(几乎是模板应用程序,仅此而已)。 GET 和 DELETE 调用工作正常,PUT 和 POST 给出 400 错误。诚然,这一切都很新,所以我正在寻找一些关于如何排除故障的基本方向。以下是相关的屏幕截图,我很乐意根据要求提供其他人。提前致谢。

【问题讨论】:

  • 更新:想通了,我需要在 Postman 中使用“Raw”选项,并在引号中提供参数值,我一直在使用非引号值或 kvp 等,即无法正确格式化为 json。

标签: http postman asp.net-core-webapi


【解决方案1】:

您正在尝试发出需要在其正文中包含字符串值的 POST 请求。

进入 Postman Request 的 Body 部分,选择 form-data,然后添加 value 作为参数名称和 This is test string 作为参数值

【讨论】:

  • 我尝试过操纵 Body,并尝试过“none”、“form-data”、“x-www-form-urlencoded”等,它们仍然返回 400。谢谢这么快的反应!
  • 需要用到form-data,其他不相关。
  • 我需要你再尝试一件事。选择 Raw 并在其中写入文本。然后发送它
  • 也尝试过,但这是使用 Raw 的最新测试:POST /api/values HTTP/1.1 主机:localhost:53091 缓存控制:无缓存邮递员令牌:b62d712a-d361 -434d-808a-88f6688aad3b 测试------WebKitFormBoundary7MA4YWxkTrZu0gW--
  • 另外,为了它的价值,在 api 代码中注释掉“[FromBody] 字符串值”参数将允许调用通过,并且我的断点在 Post 方法上被命中。
【解决方案2】:

我知道这个非常古老的线程,但可以帮助发布我的答案的人。 尝试更新您的方法属性 [HttpPost("New")] 并将其称为 http:localhost//api/new。

【讨论】:

    【解决方案3】:

    我的是 .net core 上的开发环境。

    这让我发疯了,浪费了 5 个小时,所有这些都阻止了来自浏览器调用或 Postman 的发布请求。

    以下三个更改在 3 个不同的场景中帮助了我。

    1. 首先我禁用了 https 并使其仅是 http。注释掉 sslPort 并从 https 中删除“s”。

    1. 接下来我觉得 xsrf/csrf 令牌引起了问题,所以我禁用了 Anti Forgery 令牌,如下所示。如您所见,我在控制器级别应用了 IgnoreAntiforgeryToken 属性,但您也可以根据需要在操作方法级别应用。无论如何都会发送令牌,但您可以要求 .net 核心对该路由忽略它。

    1. 最后,我注意到 action 方法中的 ApiVersion 参数也引起了问题,所以我也将其注释掉。

    【讨论】:

    • 从 API 方法中删除属性 [ValidateAntiForgeryToken] 解决了我的问题。这是正确的方法吗?
    猜你喜欢
    • 2016-04-13
    • 2020-11-13
    • 2014-04-05
    • 1970-01-01
    • 2022-11-10
    • 2018-06-07
    • 2022-01-04
    • 2011-06-18
    • 2017-02-13
    相关资源
    最近更新 更多