首页 > 解决方案 > Swagger Swashbuckle:带有查询参数的 POST API 端点

问题描述

我需要帮助来覆盖 swagger 生成器来处理 API 端点,并在 swashbuckle 中记录查询参数

我找到了一个链接,在 Drastic Method 中解释了如何覆盖 swagger 生成器

例如:我有两个相同的路由定义端点:

默认 swagger 生成器的问题在于它会与相同的端点发生冲突。我尝试ResolveConflictingActions了 swashbuckle 的方法,但没有太大帮助。

需要有关实际工作代码的帮助,该代码会覆盖 swashbuckle 中的 swagger 生成器,并使用此图像的查询参数记录端点

标签: asp.net-web-apiswaggerswagger-uiswagger-2.0swashbuckle

解决方案


您从 Swashbuckle 获得的错误是正确的,您正在尝试为同一路线创建多个操作,查询参数不会使路径唯一。这违反了 Swagger 规范。从 OpenAPI 规范...

对于每个路径,您定义可用于访问该路径的操作(HTTP 方法)。OpenAPI 3.0 支持 get、post、put、patch、delete、head、options 和 trace。单个路径可以支持多种操作,例如,GET /users 获取用户列表,POST /users 添加新用户。OpenAPI 将唯一操作定义为路径和 HTTP 方法的组合。这意味着不允许对同一路径使用两个 GET 或两个 POST 方法——即使它们具有不同的参数(参数对唯一性没有影响)。

您应该创建一个查询参数是可选的路径。您最终将拥有相同的 API,并具有兼容的 swagger 定义。


推荐阅读