传统的HTTP接口调用是一件比较繁琐的事情,特别是在Post数据的时候;不仅要拼访问的URL还是把数据序列化成流的方式给Request进行提交,获取Respons后还要对流进行解码。在实际应用虽然可以对HttpClient进行一个简单的封装,一旦到了上层大量的API调用还是不方便和不好维护。但如果在不改变HTTP接口服务的情况可以通过RPC的方式来调用HTTP服务那在使用和修改上都会变得更简单和便于维护了; 接下来讲解一下如何使用FastHttpApi通过接口描述的方式来访问HTTP接口服务!
引用组件
在这里简单地介绍一下FastHttpApi,它是一个轻量级高性的能的HTTP通讯组件,除了可以构建高性的HTTP服务外,还可以通过它来实现基于RPC的方式来访问第三方HTTP服务。可以到GitHub了解。如果需要通过接口的方式访问通第三方HTTP服务,首先要在项目用引用FastHttpApi,可以在Nuget上找到它,命令安装如下 Install-Package BeetleX.FastHttpApi -Version 1.0.2.6也可以直接在VS中添加Nuget引用。
使用组件
在定义接口前了解第三方的HTTP服务结构是必须的(当然如果选择FastHttpApi构建webapi会得到一下更高效的性能支持),下面主要讲解通过组件定议接口来访问asp.net mvc api的接口服务,先看一下服务的代码
public class HomeController : Controller { public DateTime GetTime() { return DateTime.Now; } public IActionResult Hello(string name) { return new JsonResult($"hello {name}"); } public IEnumerable<Order> ListOrders(int employee, string customer) { Func<Order, bool> exp = o => (employee == 0 || o.EmployeeID == employee) && (string.IsNullOrEmpty(customer) || o.CustomerID == customer); var result = DataHelper.Orders.Where(exp); return result; } public Employee GetEmployee(int id) { Employee result = DataHelper.Employees.Find(e => e.EmployeeID == id); return result; } [HttpPost] public int AddEmployee([FromBody] List<Employee> items) { if (items == null) return 0; return items.Count; } [HttpPost] public Employee EditEmployee(int id, [FromBody]Employee employee) { employee.EmployeeID = id; return employee; } public bool Login(string name, string pwd) { if (name == "admin" && pwd == "123456") return true; return false; } }
以上是一个简单的asp.net mvc api的代码,接下来用接口来描述对应调用方法

