在JavaScript中如何校验对象字段值?可配置化校验HTTP请求参数方案
HTTP请求参数校验实现方案
校验规则定义
你需要的声明式字段校验可以直接通过yup实现,规则配置和你预期的写法高度对齐:
import * as yup from 'yup'; const requestValidateSchema = yup.object({ // 校验classic为布尔类型 classic: yup.boolean().required(), // 校验billing-account为长度等于9的字符串 "billing-account": yup.string().length(9).required(), // 校验device为长度等于6的字符串 device: yup.string().length(6).required() });
注:你给出的示例配置中device字段的长度要求写为9属于笔误,以上规则已按实际需求调整为长度等于6。
校验调用逻辑
在调用makeHttpCall前插入校验逻辑即可,支持同步/异步两种校验方式:
异步校验写法
async function sendHttpRequest(request) { try { // abortEarly设为false可一次性返回所有字段的校验错误 const validatedRequest = await requestValidateSchema.validate(request, { abortEarly: false }); // 校验通过后发起请求 return makeHttpCall(validatedRequest); } catch (validateError) { // 校验失败处理逻辑,validateError.errors存储所有错误提示 console.error('参数校验失败:', validateError.errors); throw validateError; } }
同步校验写法
function sendHttpRequest(request) { try { const validatedRequest = requestValidateSchema.validateSync(request, { abortEarly: false }); return makeHttpCall(validatedRequest); } catch (validateError) { console.error('参数校验失败:', validateError.errors); throw validateError; } }
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

