asp.net-web-api - Swagger Swashbuckle:带有查询参数的 POST API 端点
问题描述
我需要帮助来覆盖 swagger 生成器来处理 API 端点,并在 swashbuckle 中记录查询参数
我找到了一个链接,在 Drastic Method 中解释了如何覆盖 swagger 生成器
例如:我有两个相同的路由定义端点:
- POST /api/customer(路由模板 -> /api/customer)
- POST /api/customer?f={f}&l={l} (路由模板 -> /api/customer)
默认 swagger 生成器的问题在于它会与相同的端点发生冲突。我尝试ResolveConflictingActions
了 swashbuckle 的方法,但没有太大帮助。
需要有关实际工作代码的帮助,该代码会覆盖 swashbuckle 中的 swagger 生成器,并使用此图像的查询参数记录端点
解决方案
您从 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 定义。
推荐阅读
- c - 牛顿收敛方法不起作用
- bash - 将文件列表传送到 emacs 时出现问题
- image-processing - 恢复原始图像
- sql - 忽略 CAST 错误
- java - javax.ws.rs.NotFoundException:未找到 junit+jersy 测试框架的 HTTP 404
- excel - VBA - 如何取消隐藏列?
- python - 运行我的机器人的 python 代码返回了一个语法错误,我不知道错误是什么
- haskell - Haskell 中是否有返回其参数类型(或显示类型的字符串)的函数?
- docker - 构建无堆栈的 docker 镜像
- kubernetes - 如何强制删除 kubernetes pod?