Swagger Swashbuckle:具有查询参数的POST API端点

时间:2019-01-11 21:35:34

标签: asp.net-web-api swagger swagger-ui swagger-2.0 swashbuckle

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

我发现了一个link,其中在Drastic方法中解释了如何覆盖swagger生成器

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

  • POST / api / customer(路由模板-> / api / customer)
  • POST / api / customer?f = {f}&l = {l}(路由模板-> / api / customer)

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

需要有关实际工作代码的帮助,该代码将覆盖{swackle}和文档端点中的swagger生成器,并使用诸如image这样的查询参数

1 个答案:

答案 0 :(得分:0)

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

  

对于每个路径,您定义可以使用的操作(HTTP方法)   访问该路径。 OpenAPI 3.0支持获取,发布,放置,修补,   删除,标题,选项和跟踪。一条路径可以支持多个   操作,例如GET / users以获取用户列表和POST   / users添加一个新用户。 OpenAPI将唯一操作定义为   路径和HTTP方法的组合。这意味着两个GET或   不允许将两个POST方法用于同一路径-即使它们具有   不同的参数(参数对唯一性没有影响)。

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