昂首阔步:在同一REST操作中组合路径和查询参数

时间:2019-11-13 21:38:25

标签: swagger

在Swagger 2.0或3.0中可以同时使用path参数和查询参数吗?例如,给定以下基本URL和路径参数:

/api.example.com/{path}

是否可以添加查询参数,例如:

/api.example.com/{path}?<query_param>=<query_value>

我的用例是DELETE操作:{path}引用要删除的对象ID,我想添加一个标志,以便请求者可以指定是否尝试强制删除通常会删除的对象。不可删除(请考虑使用rm -f在Linux中删除非空目录)。然后,URL看起来像:

/api.example.com/{objectID123}                     (regular delete; will fail if object is non-empty)

/api.example.com/{objectID123}?forceDelete=True    (force delete)

我知道我可以将对象ID和forceDelete标志都指定为查询参数,但这意味着仅根据查询参数重写DELETE操作,而其他操作均基于路径参数;我希望一切保持一致。

我阅读了文档,但是没有找到明确解决的问题。请注意,如果有我不知道的最佳实践,我愿意采用另一种方式来处理DELETE操作。

1 个答案:

答案 0 :(得分:0)

是的,同一操作中可以有不同的参数类型。

openapi: 3.0.2
...
paths:
  /api.example.com/{objectID}:
    delete:
      parameters:
        - in: path
          name: objectID
          required: true
          schema:
            type: integer
        - in: query
          name: forceDelete
          schema:
            type: boolean
            default: false