当我尝试将 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 给出错误的主要内容,如果未能解决你的问题,请参考以下文章
将 vb.net 类对象转换为 vb.net 中的 JSON 字符串
尽管在邮递员中工作,但请求 JSON 在 JMeter 中给出错误
如何在 Vue 和 Axios 中循环访问 API 端点 JSON 对象?