标签:list var get 异常 gis 自动 empty 空间 cut
相信大家都知道在前后端分离的开发模式中,异常处理和参数检验都是很重要的事情
那么如何做好处理呢?
首先我们来介绍一下如何做参数校验:
参数检验那我们一定会想到实体类属性,Required 需要引用命名空间System.ComponentModel.DataAnnotations
其实除了Required 还有很多具体大家可以参考
我们这里已注册为例
首先来定义我们实体类
public class UserRegisterPostVm
{
[Required(ErrorMessage = "用户Code不能为空")]
public string Code { get; set; }
[Required(ErrorMessage = "用户名称不能为空")]
public string Name { get; set; }
[Required(ErrorMessage = "用户年龄不能为空")]
[Range(1, 100, ErrorMessage = "年龄必须介于1~100之间")]
public int? Age { get; set; }
[Required(ErrorMessage = "用户邮箱不能为空")]
[EmailAddress(ErrorMessage = "请填写正确的邮箱地址")]
public string Email { get; set; }
}
实体属性也可以都好隔开看个人的习惯,
下面来编写我们的统一参数处理,这里我们是已中间件的形式
.netcore中的中间件大家应该都了解过如果不清楚的话推荐大家去看看
园子里有很多相关文章,可以自行了解
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace ApiSource
{
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
var result = context.ModelState.Keys
.SelectMany(key => context.ModelState[key].Errors.Select(x => new ValidationError(key, x.ErrorMessage)))
.ToList();
context.Result = new ObjectResult(result);
}
}
}
public class ValidationError
{
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string Field { get; }
public string Message { get; }
public ValidationError(string field, string message)
{
Field = field != string.Empty ? field : null;
Message = message;
}
}
}
startup.cs
services.AddMvc(options =>
{
options.Filters.Add<ValidateModelAttribute>();
});
// 关闭netcore自动处理参数校验机制
services.Configure<ApiBehaviorOptions>(options => options.SuppressModelStateInvalidFilter = true);
标签:list var get 异常 gis 自动 empty 空间 cut
原文地址:https://www.cnblogs.com/Bczc/p/12910865.html