[英]How to post a form data with array to an API with Joi array validation
我創建了一個 Hapi API,它只允許multipart/form-data
,因為我需要傳遞圖像 stream 並且其中一個有效負載需要作為數組,所以我使用 Joi.array 來驗證它。
payload: {
parse: true,
maxBytes: 20971520,
output: "stream",
timeout: 300000,
multipart: true,
},
validate: {
payload: Joi.object({
thumbnail: Joi.any().optional().meta({ swaggerType: "file" }),
tags: Joi.array()
}),
}
在前端,我嘗試通過將其字符串化為 append FormData:
const formData = new FormData();
formData.append("tags", JSON.stringify(values[val]);
但是,它仍然顯示""tags" must be an array"
錯誤信息。 有沒有其他方法可以將數組傳遞給表單數據?
我有完全相同的問題。 我使用的是 express,但我想你會發現這個答案在 Hapi 中也很有幫助。
您不能直接將tags
輸入傳遞給 Joi 驗證,因為它是數組的字符串表示形式。 您可以先解析它-
let parsedTags = [];
if (tags) {
parsedTags = JSON.parse(tags);
}
(這個邏輯可以封裝在 try-catch 中以捕獲任何解析問題)
然后,將parsedTags
傳遞給驗證 function(將密鑰保留為“標簽”)。
我不知道有任何其他方法可以做到這一點,這個解決方案對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.