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

对象作为Open API Specification Swager上API中的查询字符串参数

薛寒
2023-03-14

我有一个API,它接受查询参数作为对象。我用这个来添加多个过滤器来过滤结果。

当我从 swagger 点击请求时,我在控制器中的过滤器对象为空。

userFilter是POJO类。它被用作查询参数,在控制器中,它是null。

招摇时,显示如下

当试图从userFilter访问任何字段时,userFilter对象未被构造并在控制器类中获取NullPointerException。

共有1个答案

庄高谊
2023-03-14

我从 swagger.io 那里得到了解决方案

根据说明,内容用于样式和分解未涵盖的复杂序列化方案。例如,如果我们需要在查询字符串中发送一个 JSON 字符串,如下所示:

filter={"type":"t-shirt","color":"blue"}

在这种情况下,我们需要将< code>parameter模式包装到< code>content/

我们需要将< code > Content = { @ Content(Schema = @ Schema(type = " object "))} 添加到< code>@Parameter中。

@Parameter(description = "Filters", required = true, content = {@Content(schema = @Schema(type = "object"))})

在< code>JSON格式中,它将如下所示。

parameters:
  - in: query
    name: filter
    
    # Wrap 'schema' into 'content.<media-type>'
    content:
      application/json:  # <---- media type indicates how to serialize / deserialize the parameter content
        schema:
          type: object
          properties:
            type:
              type: string
            color:
              type: string
 类似资料:
  • 问题内容: 如何在Angularjs中使用查询参数构建URL。 我看到了API $ location.search() 问题是$ location(url)是重定向到url。就我而言,我想为查询参数传递url和key:value对,并构建url。就像是 网址: params: 结果: 我喜欢使用该URL进行链接。我也看到了angular encoding ,字符。我可以避免吗? 编辑: 我的意图是

  • 我正在尝试使用OpenAPI记录一个查询字符串,它看起来像 并包含具有属性 和的对象列表。 我的 文档如下所示 问题如下:它看起来像<code>样式:deepObject</code>选项只适用于一个级别,而不适用于我的对象实际所在的第二个级别。也就是说,它需要一个查询字符串,如 对象未序列化为具有和键的数组。 有办法解决吗?

  • 我需要实现下面的WebAPI方法: 所有查询字符串参数都可以为空。也就是说,调用者可以指定从0到所有5个参数。 在MVC4 beta中,我曾经执行以下操作: MVC4 RC不再这样运行了。如果我指定的参数少于5个,它会回复说: 在控制器“书籍”上未找到与请求匹配的操作。 正确的方法签名是什么,使其像以前一样运行,而不必在 URL 路由中指定可选参数?

  • 问题内容: 您是否知道将Javascript对象编码为可通过请求传递的快速简单的方法? 不,没有其他框架-只是纯Javascript :) 问题答案: 像这样? 编辑:这也将转换递归对象(使用php“ array”表示法作为查询字符串)

  • 我从客户端发送了以下查询字符串参数 在REST服务器中,我如何接收上述格式并正确分配给每个类别? 更新1 参数的值为 {_=[1437904506062],{“take”:75,“skip”:0,“page”:1,“pageSize”:75、“filter”:{“logic”:“and”,“filters”:〔{“field”:“prodCode”,“operator”:“eq”,“value”: