Skip to main content
Glama
参数验证工具.ts7.59 kB
/** * 参数验证工具模块 * 提供各种参数验证函数,用于API接口的输入验证 */ /** * 验证结果接口 */ interface ValidationResult { state: boolean; message: string; data: any; } /** * 验证字符串是否为空或未定义 * @param value 要验证的值 * @param fieldName 字段名称 * @returns 验证结果 */ export function validateRequired(value: any, fieldName: string): ValidationResult { if (value === undefined || value === null || value === '') { return { state: false, message: `${fieldName}不能为空`, data: null }; } return { state: true, message: '验证通过', data: value }; } /** * 验证字符串长度 * @param value 要验证的字符串 * @param fieldName 字段名称 * @param minLength 最小长度 * @param maxLength 最大长度 * @returns 验证结果 */ export function validateStringLength(value: string, fieldName: string, minLength: number = 1, maxLength: number = 255): ValidationResult { if (typeof value !== 'string') { return { state: false, message: `${fieldName}必须是字符串类型`, data: null }; } if (value.length < minLength) { return { state: false, message: `${fieldName}长度不能少于${minLength}个字符`, data: null }; } if (value.length > maxLength) { return { state: false, message: `${fieldName}长度不能超过${maxLength}个字符`, data: null }; } return { state: true, message: '验证通过', data: value }; } /** * 验证数组是否为空 * @param value 要验证的数组 * @param fieldName 字段名称 * @returns 验证结果 */ export function validateArrayNotEmpty(value: any, fieldName: string): ValidationResult { if (!Array.isArray(value)) { return { state: false, message: `${fieldName}必须是数组类型`, data: null }; } if (value.length === 0) { return { state: false, message: `${fieldName}不能为空数组`, data: null }; } return { state: true, message: '验证通过', data: value }; } /** * 验证UUID格式 * @param value 要验证的UUID字符串 * @param fieldName 字段名称 * @returns 验证结果 */ export function validateUUID(value: string, fieldName: string): ValidationResult { const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; if (typeof value !== 'string') { return { state: false, message: `${fieldName}必须是字符串类型`, data: null }; } if (!uuidRegex.test(value)) { return { state: false, message: `${fieldName}格式不正确,必须是有效的UUID`, data: null }; } return { state: true, message: '验证通过', data: value }; } /** * 验证URL格式 * @param value 要验证的URL字符串 * @param fieldName 字段名称 * @returns 验证结果 */ export function validateURL(value: string, fieldName: string): ValidationResult { if (typeof value !== 'string') { return { state: false, message: `${fieldName}必须是字符串类型`, data: null }; } try { new URL(value); return { state: true, message: '验证通过', data: value }; } catch { return { state: false, message: `${fieldName}格式不正确,必须是有效的URL`, data: null }; } } /** * 验证HTTP方法 * @param value 要验证的HTTP方法 * @param fieldName 字段名称 * @returns 验证结果 */ export function validateHTTPMethod(value: string, fieldName: string): ValidationResult { const validMethods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS']; if (typeof value !== 'string') { return { state: false, message: `${fieldName}必须是字符串类型`, data: null }; } if (!validMethods.includes(value.toUpperCase())) { return { state: false, message: `${fieldName}必须是有效的HTTP方法: ${validMethods.join(', ')}`, data: null }; } return { state: true, message: '验证通过', data: value.toUpperCase() }; } /** * 验证JSON字符串 * @param value 要验证的JSON字符串 * @param fieldName 字段名称 * @returns 验证结果 */ export function validateJSON(value: string, fieldName: string): ValidationResult { if (typeof value !== 'string') { return { state: false, message: `${fieldName}必须是字符串类型`, data: null }; } if (value.trim() === '') { return { state: true, message: '验证通过', data: {} }; } try { const parsed = JSON.parse(value); return { state: true, message: '验证通过', data: parsed }; } catch { return { state: false, message: `${fieldName}必须是有效的JSON格式`, data: null }; } } /** * 验证测试任务对象 * @param task 要验证的任务对象 * @returns 验证结果 */ export function validateTestTask(task: any): ValidationResult { if (typeof task !== 'object' || task === null) { return { state: false, message: '任务必须是对象类型', data: null }; } // 验证任务名称 const nameValidation = validateRequired(task.name, '任务名称'); if (!nameValidation.state) { return nameValidation; } const nameStringValidation = validateStringLength(task.name, '任务名称', 1, 100); if (!nameStringValidation.state) { return nameStringValidation; } // 验证URL const urlValidation = validateRequired(task.url, '请求URL'); if (!urlValidation.state) { return urlValidation; } const urlFormatValidation = validateURL(task.url, '请求URL'); if (!urlFormatValidation.state) { return urlFormatValidation; } // 验证HTTP方法 const methodValidation = validateRequired(task.method, '请求方法'); if (!methodValidation.state) { return methodValidation; } const methodFormatValidation = validateHTTPMethod(task.method, '请求方法'); if (!methodFormatValidation.state) { return methodFormatValidation; } // 验证请求头(可选) if (task.headers !== undefined && task.headers !== null && task.headers !== '') { const headersValidation = validateJSON(task.headers, '请求头'); if (!headersValidation.state) { return headersValidation; } } // 验证请求体(可选) if (task.body !== undefined && task.body !== null && task.body !== '') { const bodyValidation = validateJSON(task.body, '请求体'); if (!bodyValidation.state) { return bodyValidation; } } return { state: true, message: '任务验证通过', data: task }; } /** * 批量验证测试任务数组 * @param tasks 要验证的任务数组 * @returns 验证结果 */ export function validateTestTasks(tasks: any): ValidationResult { const arrayValidation = validateArrayNotEmpty(tasks, '任务列表'); if (!arrayValidation.state) { return arrayValidation; } for (let i = 0; i < tasks.length; i++) { const taskValidation = validateTestTask(tasks[i]); if (!taskValidation.state) { return { state: false, message: `第${i + 1}个任务验证失败: ${taskValidation.message}`, data: null }; } } return { state: true, message: '所有任务验证通过', data: tasks }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Actrue/api-test-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server