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

如何在Swagger(OpenAPI)中定义互斥的查询参数?

朱令
2023-03-14
                    "parameters": [
                    {
                        "name": "username",
                        "description": "Fetch username by username/email",
                        "required": false,
                        "type": "string",
                        "paramType": "query"
                    },
                    {
                        "name": "site",
                        "description": "Fetch username by site",
                        "required": false,
                        "type": "string",
                        "paramType": "query"
                    },
                    {
                        "name": "survey",
                        "description": "Fetch username by survey",
                        "required": false,
                        "type": "string",
                        "paramType": "query"
                    }
                ],

共有1个答案

于鹏
2023-03-14

不幸的是,目前这是不可能的。“required”只是一个布尔值,无法表示参数之间的相互依赖关系。

您可以做的最好的事情是在参数描述中明确需求,并按照同样的思路在自定义的400 Bad请求描述中添加。

在https://github.com/oai/openapi-specification/issues/256中有一些关于在OpenAPI规范的下一个版本中实现这一点的可能方法的讨论。

 类似资料:
  • 如何为这些参数编写OpenAPI(Swagger)定义?

  • 有什么方法可以记录下面的查询吗? 其中查询参数名称是动态的,将从客户端接收。 我正在使用最新的Swagger API。

  • 我准备我的API文档的方式是每只手做一次,而不是自动生成。我有应该发送到所有API的头,不知道是否可以为整个API全局定义参数? 这些头中有些是静态的,有些必须在调用API时设置,但它们在所有API中都是相同的,我不想为每个API和每个方法复制和粘贴参数,因为这在将来是不可维护的。 我看到了API定义的静态头,但没有一个文档说明如何设置或使用它们。 这到底有没有可能?

  • 我正在尝试正确定义 OpenAPI 规范,以便从该规范生成 api 客户端。我已经解决了一个问题,即我们有一个复杂的查询对象,其中包含嵌套对象和对象数组,用于获取 GET 路由。 让我们以这些类为例。 和一个带有@Query decorator的get请求。 我得到的是。 我还尝试通过添加@ApiQuery装饰器来定义查询参数,它几乎可以工作。 - 但是现在我正在将重复的查询定义混入一个。有没有办

  • 我正在编写一个OpenAPI规范,并试图从请求路由/路径的注释中自动(使用swagger-php)生成我可能的查询参数。我知道我可以为每个路由键入所有可能的参数选项,但我确实需要能够使用注释从类的属性自动生成可能的参数,就像我可以为请求体所做的那样。(我们将有大量的类/路径,除非它们像请求体/JSONContent那样生成,否则很可能无法保持更新。这在一般的swagger-php甚至OpenAPI

  • Swagger没有为这个查询参数提供有效的参数定义。如果我删除路径和参数定义中对用户名的所有引用,则不会出现任何问题。 根据Swagger规范,我相信我使用了正确的查询参数,但不知何故它不是。