Web Api 使用模型验证
public class Person
{
public int Id { get; set; }
[Required(ErrorMessage = "姓名不能为空啊啊啊!")]
public string Name { get; set; }
[Range(, , ErrorMessage = "年龄只能在18-25之间(包含18,25)")]
public int Age { get; set; }
}
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
//首先验证有否有入参,因为模型验证只能验证参数对不对,而无法验证有没有
var flag = actionContext.ActionArguments.Values.First() == null;
if (flag)
{
//返回错误消息方法一
actionContext.Response = new HttpResponseMessage(HttpStatusCode.BadRequest)
{
Content = new StringContent("入参为空")
};
}
//如果有入参,再验证对不对
else if (!actionContext.ModelState.IsValid)
{
var values = actionContext.ModelState.Values;
// Errors 是个集合的原因是:一个属性有可能有多个验证规则
var errorMessageList = values.SelectMany(ss => ss.Errors.Select(s => s.ErrorMessage));
var errorMessage = string.Join(",", errorMessageList);
//返回错误消息方法二
actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, errorMessage);
}
}
}
[HttpPost]
[ValidateModel]
public void TestParam(Person person)
{
}
测试结果一:
var url = "http://localhost:57895/api/test/TestParam";
, name: }
$.ajax({
url: url,
type: "post",
data: data
});

测试结果二:
var url = "http://localhost:57895/api/test/TestParam";
, name: }
$.ajax({
url: url,
type: "post",
//data: data
});

Web Api 使用模型验证的更多相关文章
- ASP.NET Web API编程——模型验证与绑定
1.模型验证 使用特性约束模型属性 可以使用System.ComponentModel.DataAnnotations提供的特性来限制模型. 例如,Required特性表示字段值不能为空,Range特 ...
- .Net Core Web Api使用模型验证验证参数合法性
在接口开发过程中免不了要去验证参数的合法性,模型验证就是帮助我们去验证参数的合法性,我们可以在需要验证的model属性上加上Data Annotations特性后就会自动帮我们在action前去验证输 ...
- 基于gin的golang web开发:模型验证
Gin除了模型绑定还提供了模型验证功能.你可以给字段指定特定的规则标签,如果一个字段用binding:"required"标签修饰,在绑定时该字段的值为空,那么将返回一个错误.开发 ...
- ASP.NET Web API 管道模型
ASP.NET Web API 管道模型 前言 ASP.NET Web API是一个独立的框架,也有着自己的一套消息处理管道,不管是在WebHost宿主环境还是在SelfHost宿主环境请求和响应都是 ...
- Web API接口 安全验证
在上篇随笔<Web API应用架构设计分析(1)>,我对Web API的各种应用架构进行了概括性的分析和设计,Web API 是一种应用接口框架,它能够构建HTTP服务以支撑更广泛的客户端 ...
- ASP.NET WEB API 自定义模型校验过滤器
对外公开WEB接口时,对模型校验是常见的安全常识,常见的写法是在controller中判断ModelState.IsValid,以注册用户API为例. Model: public class Regi ...
- Asp.NetCore Web开发之模型验证
在开发中,验证表单数据是很重要的一环,如果对用户输入的数据不加限制,那么当错误的数据提交到后台后,轻则破坏数据的有效性,重则会导致服务器瘫痪,这是很致命的. 所以进行数据有效性验证是必要的,我们一般通 ...
- 关于filter web api mvc 权限验证 这里说的够详细了。。。
参考:http://www.cnblogs.com/willick/p/3331520.html Filter(筛选器)是基于AOP(面向方面编程)的设计,它的作用是对MVC框架处理客户端请求注入额外 ...
- ASP.NET Web API模型验证以及异常处理方式
ASP.NET Web API的模型验证与ASP.NET MVC一样,都使用System.ComponentModel.DataAnnotations. 具体来说,比如有:[Required(Erro ...
随机推荐
- 迭代器Iteration
定义: 可以被next()调用并不断返回下一个值的对象成为迭代器Iterator 与可迭代(Iterable)的区别: Iterable定义为:凡是作用于for循环的对象.比如list(),dict{ ...
- Oracle闪回恢复
Oracle的闪回功能包括 1.闪回数据库(前提 归档模式下 启用闪回数据库) mount 下 alter database archivelog; alter database flashback ...
- JAVA面向对象思想
1.面向对象的基本特征 面向对象具有三个基本特征:封装.多态.继承. 1)封装 封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能. ...
- Django 2.0 学习(01):Django初识与安装
Django(Python Web框架) Django是一个开放源代码的Web框架,用Python写的.采用了MTV的框架模式,即模型M,模板T和视图V.它最初被开发是用来管理以新闻内容为主的网站,即 ...
- Hadoop之Secondary NameNode
NameNode存储文件系统的变化作为log追加在本地的一个文件里:这个文件是edits.当一个NameNode启动时,它从一个映像文件:FsImage,读取HDFS的状态,使用来自edits日志文件 ...
- 使用IIS Server Farms搭建应用服务负载均衡
当公司的业务扩大, 伴随着大量的请求,应用服务器的承受能力已经不能满足不断增长的业务需求,使用IIS Server Farms搭建应负载均衡的方式,把请求分发给不同的应用服务器进行处理,这个时候就降低 ...
- Golang的CSP很酷?其实.NET也可以轻松完成
说起Golang(后面统称为Go),就想到他的高并发特性,在深入一些就是 Goroutine.在大家被它优雅的语法和简洁的代码实现的高并发程序所折服时,其实C#/.NET也可以很容易的做到.今天我们来 ...
- 设计模式——备忘录模式(C++实现)
#include <iostream> #include <string> #include <vector> using namespace std; class ...
- python 全栈开发,Day2(正式)
一.in的使用 in 操作符用于判断关键字是否存在于变量中 a = '男孩wusir' print('男孩' in a) 执行输出: True in是整体匹配,不会拆分匹配. a = '男孩wusir ...
- Cesium解决按住滚轮旋转时进入地下的问题
viewer.clock.onTick.addEventListener(function () { setMinCamera()}) var setMinCamera = functi ...