当前位置: 首页 > 知识库问答 >
问题:

如何使用swagger在path中定义一个可选参数

薛涛
2023-03-14

我的REST web服务中有一个函数使用GET方法,它有两个可选参数。

我试图在Swagger中定义它,但在将required设置为false后,我遇到了一个错误,不是一个有效的参数定义。

我发现,如果将required值设置为true,错误就会消失。下面是我的Swagger代码的示例。

...
paths:
  '/get/{param1}/{param2}':
    get:
      ...
      parameters:
      - name: param1
        in: path
        description: 'description regarding param1'
        required: false
        type: string
      - name: param2
        in: path
        description: 'description regarding param2'
        required: false
        type: string

我在body或Query中的参数中没有体验到这种情况。我认为这个问题只与PATH中的参数有关。我在swagger规范文件中也找不到任何解决方案。

共有1个答案

柳浩大
2023-03-14

鉴于根据OpenAPI/Swagger规范必须需要path参数,您可以考虑使用以下路径添加2个单独的endpoint:

  • /get/{param1}/{param2}提供param2时
  • /get/{param1}/未提供param2时
 类似资料:
  • 我正在尝试创建一个适当的REST API,并使用Swagger(2.0)记录它。 所以,我有一个API调用,它是一个查询,即它不做任何更改,也不创建任何内容(幂等和安全)。但它需要传入一个复杂的JSON参数(项目列表、2或3组地址等)。所以我用URL编码的JSON参数进行GET。这似乎是正确的做法。 出于这个原因,我经常看到这样的 API,他们将其作为 POST 进行,但这是对 POST 动词的错

  • 我在SwaggerHub注册,并使用OpenAPI3.0创建了一个新的API。在我的API中,路径有2个非必需参数,但我不能将它们设置为not required--编辑器显示“not alleving values”错误。 以下是我的API定义: 但是,如果删除属性,则会出现2个错误: 什么是有效的语法?

  • 我已经通读了文档,但这似乎对我不起作用。我跟踪了这个医生。但我不确定这是否与我要做的事情有关,我认为这个文档是用于传递这样的查询- 这是我的目标:api.site.com/test/(optional_field) 因此,如果有人转到“测试”endpoint,它会将可选字段默认为一个参数,但如果他们在那里添加一些内容,它会将其作为输入。 也就是说,这是我的代码: 我想做的是,如果他们只是在没有可选

  • 在我的OpenAPI规范中,是否有可能将参数定义为对象,而不必定义其属性(匿名对象)?更具体地说,我希望我的应用编程接口能够接受这些匿名对象的数组。 这是我所拥有的,但是我在斯瓦格编辑器中得到了一个“无效参数定义”错误。 以下是错误:

  • 我有一个JSON模式文件,其中一个属性被定义为或: 当转换为YAML(用于OpenAPI/Swagger)时,它变为: 在OpenAPI中定义可为null属性的正确方法是什么?