You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RAML中如何验证查询参数sfIds为数值数组?

RAML数组查询参数数值验证方案

问题原因

你通过自定义NumericArray类型实现验证的思路是可行的,但Mule默认会把查询参数中的数组整体解析为JSONArray对象,而非逐个解析元素,导致校验时误判元素类型为JSONArray而非数值,从而报错。

正确RAML配置

只需在查询参数中添加collectionFormat配置,让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]
        collectionFormat: multi  # 核心配置,指定数组参数的传递格式

配置说明

  • collectionFormat: multi:指定参数以sfIds=111&sfIds=222的多键值对格式传递,Mule会逐个解析每个sfIds值为数值类型,完成校验。
  • 若需要支持逗号分隔的格式(如sfIds=111,222),可将collectionFormat改为csv,同样能让Mule拆分元素并校验数值类型。

验证结果

配置完成后:

  • 合法请求:/ids?sfIds=111&sfIds=222 或 /ids?sfIds=111,222 会通过校验
  • 非法请求:/ids?sfIds=ABC&sfIds=111 或 /ids?sfIds=ABC,111 会触发类型校验错误,符合预期

内容的提问来源于stack exchange,提问作者Triumph Spitfire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 03:57:55