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

如何在OpenAPI(Swagger)中记录动态查询参数名称?

丌官嘉勋
2023-03-14

有什么方法可以记录下面的查询吗?

GET api/v1/users?name1=value1&name2=value

其中查询参数名称是动态的,将从客户端接收。

我正在使用最新的Swagger API。

共有2个答案

陈毅
2023-03-14

@Helen的答案甚至可以完美地使用Spring用户界面库。

依赖性:

 <dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.1.43</version>
 </dependency>

在 API 函数中,添加以下参数:

 @Parameter(in=ParameterIn.QUERY,
            name="params", style=ParameterStyle.FORM,
            schema=@Schema(type="object"), explode=Explode.TRUE,
            example="") String paramsObj
黄景胜
2023-03-14

自由格式的查询参数可以用OpenAPI 3.x描述,但不能用OpenAPI 2.0 (Swagger 2.0)描述。该参数必须具有序列化方法为< code>style: form和< code>explode: true的< code>type: object。对象将被序列化为< code >?prop1 =值1

openapi: 3.0.3
...
paths:
  /users:
    get:
      parameters:
        - in: query

          # Arbitrary name. It won't appear in the request URL, but will be used
          # in server & client code generated from this OAS document.
          name: params

          schema:
            type: object
            # If the parameter values are of specific type, e.g. string:
            additionalProperties:
              type: string
            # If the parameter values can be of different types
            # (e.g. string, number, boolean, ...)
            # additionalProperties: true

          # `style: form` and `explode: true` is the default serialization method
          # for query parameters, so these keywords can be omitted
          style: form
          explode: true

Swagger UI 3.15.0和Swagger编辑器3.5.6支持自由格式的查询参数。在参数编辑器中,以JSON对象格式输入参数名称和值,例如{"prop1":"vale1","prop2":"vale2"}。“试用”将作为参数=value查询参数发送它们:

但不确定Codecen支持。

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

  • 我试图找出如何指示到一个自定义对象正在生成使用拦截一些传入的请求参数并从中创建一个对象。这个概念实际上与Spring使用所做的相同。 以下是我的自定义对象的某些部分: class: 使用带有默认查询参数名称的的控制器: 使用带有自定义查询参数名称的的控制器: 正如您在上面的示例中看到的,每个endpoint都可以覆盖默认的查询参数名称 我如何向表明这一点?

  • 这是唯一的解决办法吗:

  • 使用 ORM,我想做一个 POST 请求,让一些具有值的字段,这些字段将在数据库中转换为那里指定的默认值。 问题是OpenAPI(Swagger)文档忽略默认的,并且默认情况下仍然提示。 在我们找到的文档中的OpenAPI模式示例(请求正文)中: 这是不行的,因为我指定默认值为 ,所以我期望这样做: 这会将一个 传递给 ,最后将在数据库中解析为默认值(即新生成的

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