asp.net Web API
如果ajax请求数量增长,asp.net mvc基于JsonResult的控制器操作无法满足高级ajax请求,可以使用Web API来处理AJAX请求
注册Web API路由
routes.MapHttpRoute( name:"defaultApi", routeTemplate:"api/{controller}/{id}", defaults:new{id=RouteParameter.Optional} );
REST风格架构
请求方式
GET 查询资源
PUT 更新
POST 创建
DELETE 删除
数据分页与查询
使用URL参数表达式
$filter 过滤符合布尔条件的值
$orderby 排序的字段
$skip 跳过几个记录
$top 返回前几个记录
例如:
/api/action?$top=5&$skip=10&$orderby=id&filter=xxoo
异常处理
继承System.Web.Http.Filter.IExceptionFilter接口或者ExceptionFilterAttribute创建异常过滤器,重写OnException()方法
usingSystem.Diagnostics; usingSystem.Web.Http.Filters; publicclassCustomExceptionFilter:ExceptionFilterAttribute { publicoverridevoidOnException(HttpActionExecutedContextcontext) { //修改(HttpActionExecutedContext参数来重写发送给客户端的HTTP应答消息 if(context.Response==null) { context.Response=neewHttpResponseMessage(); } context.Response.StatusCode=HttpStatusCode.NotImplemented; context.Response.Content=newStringContent("自定义消息"); base.OnException(conttext); } }
注册异常过滤器
可以直接在控制器上用,也可以在Global中去注册
staticvoidConfigureApi(HttpConfigurationconfig) { config.Filters.Add(newCustomExceptionFilter()); }