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

Swagger参数多态性

仰翰采
2023-03-14

是否可以在 Swagger 中定义多种类型的输入参数?

示例:我有一个使用URL < code > http://localhost/tasks/{ taskId } 处理资源的API。但是每个任务都包含整数id和字符串uuid。我希望允许用户通过id或uuid来寻址资源,这样< code > http://localhost/tasks/123 和< code > http://localhost/tasks/51 F12 DBC-02e 7-41 a6-ab81-2381 caea 0176 URL都是有效。

但是,关于招摇的文件(https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#parameter-object)参数对象只能有一种类型

类型:必需的。参数的类型。由于参数不在请求正文中,因此仅限于简单类型(即不是对象)。值必须是“字符串”、“数字”、“整数”、“布尔”、“数组”或“文件”之一。

那么,如何将输入路径参数描述为字符串/整数呢?

共有2个答案

俞子实
2023-03-14

这可以在OpenAPI 3.0中使用oneOf实现:

openapi: 3.0.0
...
paths:
  /tasks/{taskId}:
    parameters:
      - in: path
        name: taskId
        required: true
        schema:
          oneOf:
            - type: integer
              example: 123
            - type: string
              format: uuid
              example: 51f12dbc-02e7-41a6-ab81-2381caea0176
丁沛
2023-03-14

无法在 Swagger 规范中定义属于多个类型的参数。

在您的情况下,我认为您可以使用字符串来解决问题,它可以表示路径参数中的字符串(例如“51f12dbc-02e7-41a6-ab81-2381caea0176”)和整数(例如“123”),并且服务器应该正确接收数据。

 类似资料:
  • 问题内容: 我想了解参数多态性(例如Java / Scala / C ++语言中的通用类/函数的多态性)与Haskell类型系统中的“即席”多态性之间的主要区别。我熟悉第一种语言,但是我从未与Haskell合作。 更确切地说: 例如Java中的类型推断算法与Haskell中的类型推断有何不同? 请给我举一个例子,这种情况可以用Java / Scala编写但不能用Haskell编写(根据这些平台的模

  • 我试图在c#中创建一个参数多态性函数: 我想让T成为类型变量。但是我得到了一个关于类的错误,没有找到T。 有人知道如何解决这个问题吗? 谢谢。

  • 我想在我的Swagger-ui界面上修改数据类型下的示例值。目前它包含以下默认值(由Swagger生成): 我想指定实数值,而不是“空”值。PS:我用带注释的spring boot:@ API operation,...

  • 在我的Zend应用程序中,我正在为移动应用程序编写一个小API。为了方便移动开发者,我使用了Swagger。到目前为止,除了一个GET请求外,一切正常。 当我呼叫/user/messages/{sessionToken}时?numMessages={numMessages} 有人知道我的错误吗? 欢迎任何帮助。 诚挚的问候 罗特曼 更新:按照建议,我将两个参数类型都更改为“查询”并更改了路径: 但

  • 我如何在从下面的API生成的swagger中定义属性的默认值? Swashbuckle生成OrderDirection作为所需参数。我希望它是可选的,并向客户机指示默认值(不确定swagger是否支持此选项)。 我不喜欢使属性类型为空。还有其他选择吗?理想情况下使用内置类... 我用的是虚张声势的皮带扣。AspNetCore-https://docs.microsoft.com/en-us/asp

  • 这是我的输入: 它说: 详细资料 我到底做错了什么?