簡體   English   中英

使用Joi的條件標題

[英]Conditional headers using Joi

我正在使用Joi驗證HTTP請求中的標頭。 我有兩個標題。 如果存在FOO,則需要BAR,否則BAR是可選的。 這有效:

'FOO': Joi.string().optional(),
'BAR': Joi.string().when('FOO', { is: Joi.not(''), then: Joi.required() })

如果我希望FOO是一個數值,則可以使用:

'FOO': Joi.number().integer().default(0).optional(),
'BAR': Joi.string().when('FOO', { is: Joi.number().min(1), then: Joi.required() })

但是,如果我省略default(0),那么Joi認為當FOO不存在時,需要BAR。 那是正確的行為嗎? 有沒有更好的方法來解決這個問題?

通過使用.with()可以使此過程變得簡單得多。 考慮以下架構:

const schema = Joi.object().keys({
    FOO: Joi.number().default(0).min(1),
    BAR: Joi.string()
}).with('FOO', 'BAR');

.with()強制僅在FOO存在時才需要BAR

同樣類似於您的示例,它還可以確保FOO實際上在有效負載中必須大於或等於1 ,否則Joi會將其默認設置為0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM