我正在开发一种应允许多个参数的api,但是对于其中的三个参数,我只希望其中的一个。每个键的值都比较容易,但是我想知道Joi是否也允许它,或者我应该在服务器中添加额外的验证逻辑。
简而言之,对于keys a
,b
或者c
我想使任何具有三个以上之一以上的请求失败,因此:
http://myapi.com/?a=value
是有效的请求。
http://myapi.com/?b=value&c=value2
是无效的。
谢谢!
您正在寻找object.xor(对等),如果正好一个a
,b
或者c
是必需的。
定义一组键之间的排他关系,其中一个键是必需的,但不同时:
peers
-专用密钥名称,这些名称不能一起出现,但需要其中之一。peers
可以是单个字符串值,字符串值数组或作为参数提供的每个对等项。
const schema = Joi.object().keys({
a: Joi.any(),
b: Joi.any(),
c: Joi.any()
}).xor('a', 'b', 'c');
或者,object.oxor(同行)如果只有一个a
,b
或者c
是允许的,但都不需要。
定义一组键之间的排他关系,其中只允许一个,而在以下情况则不需要:
peers
-排他键名不能一起出现,但不需要。
const schema = Joi.object().keys({
a: Joi.any(),
b: Joi.any(),
c: Joi.any()
}).oxor('a', 'b', 'c');
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句