Postman 400 Web API 的错误请求

Posted

技术标签:

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

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

【问题讨论】:

更新:想通了,我需要在 Postman 中使用“Raw”选项,并在引号中提供参数值,我一直在使用非引号值或 kvp 等,即无法正确格式化为 json。 【参考方案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 个不同的场景中帮助了我。

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

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

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

【讨论】:

从 API 方法中删除属性 [ValidateAntiForgeryToken] 解决了我的问题。这是正确的方法吗?

以上是关于Postman 400 Web API 的错误请求的主要内容,如果未能解决你的问题,请参考以下文章

邮递员 - 400 错误请求

邮递员 - 错误 400 错误请求

在 Axios 中收到 400 个错误请求,但 Postman 状态为 200

[ASP.NET Core Web应用上使用个人用户帐户存储在应用程序中的Postman模拟登录时出现400错误请求错误

使用Postman测试发送Gmail API端点

axios.post 返回 400 React Native 的错误请求