路由原理
刚开始表面上感觉Web API内容似乎没什么,也就是返回JSON数据,事实上远非我所想,不去研究不知道,其中的水还是比较深,那又如何,一步一个脚印来学习都将迎刃而解。
Self-Host 我们知道Web API它可以快速为HTTP客户端提供API来创建Web服务,为何如此这样说呢?因为我们可以将其作为主机也就是一个服务器来用完全不需要IIS,这就是我们下面要讲的第一个内容Self-Host,实现对Web API寄宿的方式有多种并且都是独立于ASP.NET框架之外,如下Self-Host寄宿是存在于Web API 1中的,而在Web API 2中实现寄宿是采用Web-Host来进行寄宿(通过程序包packages中的Web-Host以及Web Client可得知),因为Web API本身是无法提供【请求-响应】的机制,所以需要寄宿来实现,即通过具体的应用程序来为Web API运行提供一个环境。下面且听我娓娓道来。既然是进行交互必然有服务器和客户端,下面我们将从建立控制台应用程序开始来进行了解。 Web API服务器 第一步 建立一个SelfHost的控制台应用程序,添加【Microsoft.AspNet.WebApi.SelfHost】程序包,搜索时会出现多个包注意不是【AspNetWebApi.SelfHost.】如下: 第二步 添加类,如下:public class Product { public int Id { get; set; } public string Name { get; set; } public string Category { get; set; } public decimal Price { get; set; } }
第三步 添加派生自APiController控制的类以及要演示的数据,如下:public class ProductsController : ApiController { Product[] products = new Product[] { new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } }; public IEnumerable<Product> GetAllProducts() { return products; } public Product GetProductById(int id) { var product = products.FirstOrDefault((p) => p.Id == id); if (product == null) { throw new HttpResponseException(HttpStatusCode.NotFound); //如果未找到数据并返回状态码404 } return product; } public IEnumerable<Product> GetProductsByCategory(string category) { return products.Where(p => string.Equals(p.Category, category, StringComparison.OrdinalIgnoreCase)); } }
第四步 在控制台主程序中配置服务器以及添加路由var config = new HttpSelfHostConfiguration(":8080"); //配置主机 config.Routes.MapHttpRoute( //配置路由 "API Default", "api/{controller}/{id}", new { id = RouteParameter.Optional }); using (HttpSelfHostServer server = new HttpSelfHostServer(config)) //监听HTTP { server.OpenAsync().Wait(); //开启来自客户端的请求 Console.WriteLine("Press Enter to quit."); Console.ReadLine(); }
以上就是关于Web API关于主机的设置,接下来就是建立一个客户端来访问此服务器上的资源。
Web API客户端 第一步 同理建立一个ClientApp的控制台应用程序,同时添加Web API客户端程序包【Microsoft.AspNet.WebApi.Client】如下: 第二步 既然是要访问服务器上的资源,自然要添加对Web API服务器(SelfHost)的引用了。 第三步 接下来就是建立客户端并读取服务器上的资源温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67286.html