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

如何在OpenAPI3.0中定义具有两个可选参数的路径?

郑波
2023-03-14

我在SwaggerHub注册,并使用OpenAPI3.0创建了一个新的API。在我的API中,/tasks路径有2个非必需参数,但我不能将它们设置为not required--编辑器显示“not alleving values”错误。

以下是我的API定义:

openapi: 3.0.0
info:
  description: A Simple IP Address API
  title: VTasks
  version: v1
servers:
# Added by API Auto Mocking Plugin
  - description: SwaggerHub API Auto Mocking
    url: https://virtserver.swaggerhub.com/petrogromovo/Vtasks/1.0.0
  - description: SwaggerHub API Auto Mocking
    url: http://hosting.tk

paths:

  /tasks:
    get:
      tags:
        - tasks
      summary: Get paginated / filtered tasks listing
      operationId: tasks
      parameters:
        - name: page
          in: path
          description: The page number to be fetched. If missed default 1.
          required: true
          schema:
            type: integer
        - name: order_by
          in: path
          description: The order_by  be fetched. 
          required: false  // ERROR : should be equal to one of the allowed values allowedValues: true
          schema:
            type: string
        - name: filter
          in: path
          description: The filter for title field. 
          required: false // ERROR : should be equal to one of the allowed values allowedValues: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
        '400':
          description: Invalid tasks supplied
        '404':
          description: tasks were not found

但是,如果删除必需的属性,则会出现2个错误:

什么是有效的语法?

共有1个答案

艾阳羽
2023-03-14

这些参数应该是路径参数还是查询参数?

路径参数(,在:Path中)是endpoint路径的一部分,因此必须由路径模板中的{...}指示:

paths:
  /tasks/{page}/{order_by}/{filter}:

路径参数始终是必需的,即它们必须具有required:true

 类似资料:
  • 但是在OpenAPI3.0.0中,参数被请求体替换,我找不到定义头参数的方法,这将进一步用于身份验证。 在OpenAPI3.0.0中定义请求头的正确方法是什么?

  • 我的REST web服务中有一个函数使用GET方法,它有两个可选参数。 我试图在Swagger中定义它,但在将设置为后,我遇到了一个错误,不是一个有效的参数定义。 我发现,如果将值设置为,错误就会消失。下面是我的Swagger代码的示例。 我在body或Query中的参数中没有体验到这种情况。我认为这个问题只与PATH中的参数有关。我在swagger规范文件中也找不到任何解决方案。

  • 问题内容: 我可以设置带有可选参数的路由(相同的模板和控制器,但是如果某些参数不存在,则应将其忽略)? 因此,只编写一个规则,而不是编写以下两个规则? 这样的事情([此参数是可选的]) 我在他们的文档中找不到任何内容。 问题答案: 看来Angular现在已对此提供支持。 从最新的(v1.2.0)文档中: 可以包含带问号()的可选命名组

  • 问题 你想定义一个元类,允许类定义时提供可选参数,这样可以控制或配置类型的创建过程。 解决方案 在定义类的时候,Python允许我们使用 ``metaclass``关键字参数来指定特定的元类。 例如使用抽象基类: from abc import ABCMeta, abstractmethod class IStream(metaclass=ABCMeta): @abstractmethod