这几天没更新主要是由于没有一款合适的后端框架来支持咱们的Web API项目Demo, 因此耽误了几天, 目前最新的代码已经经过Sqlite + NHibernate + Autofac知足了咱们基本的Demo需求.web
按照既定的要求,咱们的API会提供给众多的客户端使用, 这些客户端能够是各类Web站点, APP, 或者是WinForm, WPF, Silverlight等诸如此类的应用,未来还有多是各类Iot等物联网设备的应用,Restful API凭借其诸多优点,已经在移动互联网的时代火了一把,在接下来物联网的时代会发展的更好。json
下图是一个简单的示意图,咱们本章的ApiClient将提供一套固定的模式,辅助客户端来访问咱们前面几章创建的API.后端
咱们在实际的项目中是定义了一个ApiClient的静态类库,其经过HttpClient 再配合 Microsoft.AspNet.WebApi.Client类库,专门根据咱们前面写的API作了更进一步的封装.api
咱们先来看一下他提供的方法签名session
顾名思义,这两个用来完成常见的HttpGet/HttpPost, 只是Post的方法中多了一个Object 的postData参数,这个就是用来发送咱们要Post到API端的数据.app
是Get,Post使用的基础方法, Get/Post的操做都是经过他完成的操做.框架
参数说明:post
apiUrl: api的host地址this
methodName: api的方法路径url
query: 查询条件的组合, 一般对应URL中queryString部分, 也就是URL中问号后面的部分
method: 要使用的httpMethod, 这里支持 Get,Post,Put,Delete四种,
postData: post/put时,要传到api端的数据, 一般已一个object, 发送以前会经过Json.Net序列化为json.
useEndpointPrefix: 这个是指咱们API的url 一般都有一个约定,就是在url的host部分后面加上api/做为开始,因此这是说url是否使用默认的这个习惯, 好比 http://xxx.com/api/xxxx
这两个从名字也能够和容易的看出来,咱们如何经过咱们的api上传跟下载文件,这个经常使用的场景有 经过app更新头像,或者从api端导出某个文件.
下面示例URL说明了咱们上面参数中所对应的URL的部分
上面除了Query对象以外,其余的都容易理解, 在没有Query对象的时候,咱们要拼出 URL的参数部分,咱们一般会须要string来拼接,更好一点的办法是定义一个Dictionary来作自动链接, 这里咱们为了更方便,
咱们定义了一个Query对象,说到这里你们应该明白Query对象就是为了帮咱们自动处理url的参数部分, 其核心基类是CoreQuery。
这里咱们看几个内置的Query
其提供了咱们Login接口必要的参数, 在使用的时候咱们能够直接new 一个loginQuery, 传入api调用的方法.
这个是咱们须要受权的APi须要传入sessionKey参数,一般咱们的BaseController里面会设计一个SessionQuery, 当发起 Api Request请求的时候,都会附上这个SessionQuery, 他会自动在API的url中附加sessionKey=xxx的参数
public class SessionQuery : CoreQuery { [Query(Name = "sessionKey")] public string SessionKey { get; set; } public SessionQuery() { } public SessionQuery(SessionQuery query) { this.SessionKey = query.SessionKey; } }
能够从下面参数看到是用来处理分页的请求的.
除了常规的参数须要经过自定义单独的Query对象以外,对于一些很简单的APi, 若是咱们须要对每一个API接口都建立一个Query那岂不是很麻烦?
针对这个问题,咱们想出了经过匿名对象来解决这个问题, CoreQuery下面有一个ParmsObj属性, 在使用的时候能够经过
这种方式来动态的添加url参数,这样会大大减小咱们定义的Query类的数量.
这个WebApiClient能够很好的在Mvc, Winform等.NET项目中使用, 帮助你的客户端应用快速接入你开发的API.
本章代码: https://code.csdn.net/ODotNet/odn-webapiclient/tree/master
同时已发布到 Nuget, 你们能够经过 Install-Package Odn.WebApiClient 来添加到项目中引用
PM> Install-Package Odn.WebApiClient
在今天移动互联网的时代,做为攻城师的咱们,谁不想着只写一套API就可让咱们的Web, Android APP, IOS APP, iPad APP, Hybired APP, H5 Web共用共同的逻辑呢? 【WEB API项目实战干货系列】教你一步步教你解决方案.