C# WebApi 添加参数校验
代码类:
public class ValidateParamsAttribute : ActionFilterAttribute{public override void OnActionExecuting(HttpActionContext actionContext){var parameters = actionContext.ActionDescriptor.GetParameters();actionContext.ModelState.Clear();foreach (var parameter in parameters){if (parameter.GetCustomAttributes().Any()){object value = null;var valueProviderResult = actionContext.ActionArguments.TryGetValue(parameter.ParameterName, out value);if (!valueProviderResult || value == null || value.ToString().Trim().Length == 0){var errorMessage = GetRequiredErrorMessage(parameter);actionContext.ModelState.AddModelError(parameter.ParameterName, errorMessage);}}}if (!actionContext.ModelState.IsValid){// 构造返回的 ApiResponse 对象var errors = actionContext.ModelState.ToDictionary(kvp => kvp.Key,e => e.Value.Errors.FirstOrDefault()?.ErrorMessage);// 构造返回的 ApiResponse 对象var response = new Result
使用方法:
[Route("api/GetInfo")] //接口地址[HttpGet][ValidateParams]public AjaxResult GetHealth([Required]string A = "", [Required]string B= "", [Required] int C= -1)
说明:在需要参数校验的接口处添加[ValidateParams]注解,然后在需要校验的参数前添加必传[Required]注解。
结果:
{"StatusCode": 400,"ErrCode": -1,"Msg": "参数校验失败","Data": {"C": "C参数不能为空"}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
