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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 11:06:04