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

OpenApi数组和嵌套对象验证

汪翰墨
2023-03-14

我使用的是OpenApi规范,这是生成类的代码示例:

CreateUsersRequest:
      required:
        - userIds
      type: object
      properties:
        userIds:
          uniqueItems: true
          minItems: 1
          type: array
          items:
            type: string
            format: uuid

我想禁止发送以下请求:

{
  "userIds": [
    ""
  ]
}
{
  "userIds": [
    null
  ]
}

如果我使用了javax。验证它看起来像:

@NotNull 
private List<@NotEmpty UUID> userIds;

有什么方法可以使用api.yml文件做同样的事情吗?

共有1个答案

夹谷腾
2023-03-14

如留档所示:

OpenAPI 3.0没有JSON模式中明确的null类型,但您可以使用null:true指定值可以是null。请注意,null不同于空字符串”。

为了防止出现空字符串,可以提供模式regex。

请尝试以下方法:

CreateUsersRequest:
      required:
        - userIds
      type: object
      properties:
        userIds:
          uniqueItems: true
          minItems: 1
          type: array
          items:
            type: string
            format: uuid
            nullable: false
            pattern: ^[a-z|\-]+$

请仔细测试代码,我意识到您使用了格式:uuid,所以我对格式模式的组合不是绝对有信心。

如有必要,您可以尝试提供自己的uuid类型。例如:

Uuid:
    type: string
    pattern: '^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$'
    nullable: false

以及:

CreateUsersRequest:
      required:
        - userIds
      type: object
      properties:
        userIds:
          uniqueItems: true
          minItems: 1
          type: array
          items:
            $ref: "#/components/schemas/Uuid"

 类似资料:
  • 我正在尝试为以下输入创建震动转换: 所需输出为: 我刚刚开始理解jolt转换的基础,但是对于嵌套结构来说,这似乎有点复杂。

  • 我需要更新嵌套在我的用户文档中的一个字段,该字段包含一个part对象数组,以添加新的part。一个part对象如下所示: 所以这意味着$addToset对我的情况没有好处...现在我不知道该怎么办。

  • 该示例摘自Elasticsearch参考:https://www.elastic.co/guide/en/Elasticsearch/reference/5.3/nested.html 我的索引和这个差不多。唯一的区别是user.first和user.last是关键字类型,所以我可以对它们使用过滤器。 在两种情况下,我应该使用什么查询来获取与上面数组匹配的文档(正好是两个项,一个项是John Sm

  • 我有一个mongodb文档,我正在使用axios ajax调用来提取它。文档有一个对象数组,其中还包含一个嵌套的对象数组。每个对象都分配了一个mongo id。最顶端的数据显示在相应的最顶端的表示组件中,但对象的后续阵列不会显示在其相对表示组件中。我得到的错误是。“TypeError:this.props.card.rdfts未定义”,但会显示它的非数组同级。然而,当我查看react-dev工具和

  • 尝试使用所有独特的硬币进行选择过滤器,但无法正确到达其末尾。 在循环浏览数据时,我可以得到所有硬币的列表。 我还想使用Set方法和spread操作符来获得唯一的值,但我不知道如何组合所有这些。

  • 问题内容: 我必须遍历json数组对象。 它具有以下结构。 基本上我在做的是prod_1是产品的名称,并且prod_1的版本列表已填充在其中。 所以现在我想要的是产品的名称以及它的版本。 问题在于可能有很多产品和该产品下的许多版本。所以我需要可以在 javascript 中使用适当的循环结构来对其进行处理。 最好将循环将产品名称存储在一个变量中,将版本存储在另一个变量中,因为我需要对产品名称进行一