当我尝试将 Get API 中的 json 对象作为 C# ASP.Net 中的查询字符串参数传递时,Swagger 给出错误

Posted

技术标签:

【中文标题】当我尝试将 Get API 中的 json 对象作为 C# ASP.Net 中的查询字符串参数传递时,Swagger 给出错误【英文标题】:Swagger is giving error when I try to pass json object in Get API as query string parameter in C# ASP.Net 【发布时间】:2022-01-09 01:36:36 【问题描述】:

。我阅读了类似问题帖子的解决方案,建议将 OpenAPI 更新到 3.0。我尝试添加 [FromQuery],SwaggerUI 抛出错误,说 Ambiguous call。

    // GET: api/user/list
    [HttpGet("list")]
    public async Task<IActionResult> GetUsers(CancellationToken cancellationToken, Filter options = null)
    

#代码

错误=> TypeError: 无法在 'Window' 上执行 'fetch': 使用 GET/HEAD 方法的请求不能有正文。

【问题讨论】:

当然,Get 方法没有正文,您在这里期望什么?至于模棱两可的调用,显然您的控制器中已经有其他冲突的 Get 方法 - 删除它们或更改它们的路由以消除冲突。 【参考方案1】:

TypeError: 无法在 'Window' 上执行 'fetch': 使用 GET/HEAD 方法的请求不能有正文。

正如错误消息所述,GET 或 HEAD 操作不能有正文。如果你想传递一些状态,那么你的选择是:

    将这些变量移至查询字符串(例如/api/user/list?filter=ABC)。 使用不同的 HTTP 动词,例如 POST,确实允许正文参数。

请注意,从技术上讲,您可以创建带有正文的 GET 请求,但我们非常不鼓励这样做,并且大多数框架(如您正在使用的框架)都会阻止您这样做。

【讨论】:

以上是关于当我尝试将 Get API 中的 json 对象作为 C# ASP.Net 中的查询字符串参数传递时,Swagger 给出错误的主要内容,如果未能解决你的问题,请参考以下文章

如何将模板Flask中的对象显示为json?

将 vb.net 类对象转换为 vb.net 中的 JSON 字符串

尽管在邮递员中工作,但请求 JSON 在 JMeter 中给出错误

如何在 Vue 和 Axios 中循环访问 API 端点 JSON 对象?

JSON stringify 中的变量在 Rest 请求中不起作用

无法将自定义对象从 API 保存到核心数据