随笔分类 - ASP.NET Web API
ASP.NET Web API
摘要:本篇体验ASP.NET Web API的安全管道。这里的安全管道是指在请求和响应过程中所经历的各个组件或进程,比如有IIS,HttpModule,OWIN,WebAPI,等等。在这个管道中大致分两个阶段,一个是验证阶段,另一个是授权阶段。在ASP.NET Web API v1版本的时候,安全管道大致
阅读全文
摘要:ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型。HttpResponseMessage Put(int id, Product item)id是int类型,是简单类型,item是Product类型,是复杂类型。简单类型实参值从哪里读取呢?--一般从URI中读取所谓的
阅读全文
摘要:ASP.NET Web API的模型验证与ASP.NET MVC一样,都使用System.ComponentModel.DataAnnotations。具体来说,比如有:[Required(ErrorMessage="")][Range(0, 999)][Bind(Exclude="")][Disp
阅读全文
摘要:RAML是Restful API Modeling Language的缩写,是用来描述API信息的文档。 创建一个.raml后缀的文件,用Atom打开。 基本用法 #%RAML 0.8 title: Book API baseUri: http://api.book.com/{version} ve
阅读全文
摘要:如何查看查询字符串?→输入包含查询字符串的URL,比如:http://localhost:54176/api/ProductCategories?name=darren&age=25→点击Params,查询字符串以键值队集合的形式存储→选中键值对,右键选择"EncodeURIComponent"可以
阅读全文
摘要:本篇体验使用AngularJS向后端ASP.NET API控制器上传文件。 首先服务端: public class FilesController : ApiController { //using System.Web.Http [HttpPost] public async Task<HttpR
阅读全文
摘要:在ASP.NET Web API中实现缓存大致有2种思路。一种是通过ETag, 一种是通过类似ASP.NET MVC中的OutputCache。通过ETag实现缓存首先安装cachecow.serverinstall-package cachecow.server在WebApiConfig中。pub...
阅读全文
摘要:有时候我们可能不想显示某个实体中的所有字段。比如客户端发出如下请求:locaohost:43321/api/groups/1/items?fields=idlocaohost:43321/api/groups/1/items?fields=id,name以上,对于Item这个类,我们可能只想显示id...
阅读全文
摘要:谈到ASP.NET Web API的分页,考虑的因素包括:1、上一页和下一页的uri2、总数和总页数3、当前页和页容量接着是服务端的数据以怎样的形式返回?我们通常这样写:{ totalCount:10, result: [ {id:1, name:"a"}, {id:2, name:"b"} ]}以...
阅读全文
摘要:所谓的动态排序是指支持任意字段、任意升序降序的排序。我们希望在客户端按如下格式写:localhost:8000/api/items?sort=titlelocalhost:8000/api/items?sort=name,titlelocalhost:8000/api/items?sort=-nam...
阅读全文
摘要:有时候,向服务端请求一个实体,我们希望返回如下的格式:links: [ href: http://localhost:8901/api/user/diaries/2013-08-17, rel: "self", method: "GET", isTemplated: false],currentDa...
阅读全文
摘要:通常情况下Server是无状态的,在ASP.NET Web API中,我们可以让服务端响应体中产生ETag属性,起到缓存的作用。大致实现原理是:1、服务端的响应体中返回一个ETag属性2、客户端通过If-None-Match属性把ETag的属性值传递给服务端3、服务端返回304状态码响应体中返回ET...
阅读全文
摘要:在ASP.NET Web API中,当我们的API发生改变,就涉及到版本问题了。如何实现API的版本呢?1、通过路由设置版本最简单的一种方式是通过路由设置,不同的路由,不同的版本,不同的controller。config.Routes.MapHttpRoute( name: "Food", ...
阅读全文
摘要:本篇涉及ASP.NET Web API中的返回数据合适和依赖注入。获取数据public IEnumerable Get(){ var results = reop.GetAllFoods() .OrderBy(f => f.Description) .Take(25...
阅读全文
摘要:在上一篇中实现了增删改查,本篇实现分页和过滤。本系列包括:1、前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查2、前端使用AngularJS的$resource,后端ASP.NET Web API,实现分页、过滤后端添加分页、排序逻辑首先要在后端API...
阅读全文
摘要:AngularJS中的$resource服务相比$http服务更适合与RESTful服务进行交互。本篇后端使用ASP.NET Web API, 前端使用$resource,实现增删改查。本系列包括:1、前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查2...
阅读全文
摘要:chsakell分享了前端使用AngularJS,后端使用ASP.NET Web API的购物车案例,非常精彩,这里这里记录下对此项目的理解。文章:http://chsakell.com/2015/01/31/angularjs-feat-web-api/http://chsakell.com/20...
阅读全文
摘要:chsakell分享了前端使用AngularJS,后端使用ASP.NET Web API的购物车案例,非常精彩,这里这里记录下对此项目的理解。文章:http://chsakell.com/2015/01/31/angularjs-feat-web-api/http://chsakell.com/20...
阅读全文
摘要:从OData v4开始增加了对单例模式的支持,我们不用每次根据主键等来获取某个EDM,就像在C#中使用单例模式一样。实现方式大致需要两步:1、在需要实现单例模式的导航属性上加上[Singleton]特性2、在EDM配置的时候使用builder.Singleton("SomeModels")来创建Si...
阅读全文