json 数组的 RAML 验证

问题描述 投票:0回答:2

在我的 API RAML 中,有一个名为“sfIds”的查询参数,它是一个数组类型。我需要在 RAML 中实现验证,以确保数组元素始终是数字,例如 [111, 222, 333] 或 [111]。诸如 [ABC,111] 之类的数组不应通过 RAML 验证。

有没有办法定义此验证的“类型”?

下面是我的 RAML 代码的一部分;请注意,这只是完整 RAML 的一部分。它没有按照我的 Mule 流程中的预期运行。

#%RAML 1.0
title: My Test API
version: v1
types:
  NumericArray:
    type: array
    items: number
/ids:
  get:
    queryParameters:
    sfIds?:
        type: NumericArray
        example: [111,222]

我在 Mule 流程中遇到的错误是:

Invalid value '[111,222]' for query parameter sfIds. /0 expected type: Number, found: JSONArray"
arrays mule numeric raml
2个回答
0
投票

您可以尝试提及更具体的类型,例如

number[]
,它是一个数字数组

#%RAML 1.0
title: My Test API
version: v1
types:
  NumericArray:
    type: number[]
/ids:
  get:
    queryParameters:
      sfIds?:
        type: NumericArray
        example: [111,222]

访问上述内容的 URL ->

/api/ids?sfIds=123&sfIds=234
当您使用
valuesOf(attributes.queryParams)

访问它时,将得到 [123,234]

0
投票

我已经成功地让这个工作了。这是现在正在运行的 RAML。

#%RAML 1.0
title: My Test API
version: v1
types:
  NumericArray:
    type: array
    items: number
    minItems: 1
/ids:
  get:
    queryParameters:
      sfIds?:
        type: array
        items:
         type: NumericArray
© www.soinside.com 2019 - 2024. All rights reserved.