Web APi入门之Self-Host(二)

这篇来讲讲WebApi的自托管,WebApi可以托管到控制台/winform/服务上,并不是一定要依赖IIS才行。

1、首先新建控制台项目,在通过Nuget搜索Microsoft.AspNet.WebApi.SelfHost

2、建立实体类

1     public class Product
2     {
3         public int Id { set; get; }
4         public string Name { set; get; }
5         public string Description { set; get; }
6     }

3、创建WebApi控制器,继承ApiController

 1     public class HomeController : ApiController
 2     {
 3         static List<Product> modelList = new List<Product>()
 4         {
 5             new Product(){Id=1,Name="电脑",Description="电器"},
 6             new Product(){Id=2,Name="冰箱",Description="电器"},
 7         };
 8 
 9         //获取所有数据
10         [HttpGet]
11         public List<Product> GetAll()
12         {
13             return modelList;
14         }
15 
16         //获取一条数据
17         [HttpGet]
18         public Product GetOne(int id)
19         {
20             return modelList.FirstOrDefault(p => p.Id == id);
21         }
22 
23         //新增
24         [HttpPost]
25         public bool PostNew(Product model)
26         {
27             modelList.Add(model);
28             return true;
29         }
30 
31         //删除
32         [HttpDelete]
33         public bool Delete(int id)
34         {
35             return modelList.Remove(modelList.Find(p => p.Id == id));
36         }
37 
38         //更新
39         [HttpPut]
40         public bool PutOne(Product model)
41         {
42             Product editModel = modelList.Find(p => p.Id == model.Id);
43             editModel.Name = model.Name;
44             editModel.Description = model.Description;
45             return true;
46         }
47     }

4、在Program的Main方法中加上如下代码

 1         static void Main(string[] args)
 2         {
 3             var config = new HttpSelfHostConfiguration("http://localhost:5000"); //配置主机
 4 
 5             config.Routes.MapHttpRoute(    //配置路由
 6                 "API Default", "api/{controller}/{id}",
 7                 new { id = RouteParameter.Optional });
 8 
 9             using (HttpSelfHostServer server = new HttpSelfHostServer(config)) //监听HTTP
10             {
11                 server.OpenAsync().Wait(); //开启来自客户端的请求
12                 Console.WriteLine("Press Enter to quit");
13                 Console.ReadLine();
14             }
15         }

5、本人机器是win10,如果直接运行是会报错的

解决方法:打开项目路径找到项目名.exe文件右键以管理员身份运行

6、通过url方式访问 http://localhost:5000/api/home

通过winform、服务等方式托管的话本篇不再讲述,方式都类似,我觉得WebApi托管在IIS上是好于其他方式的,用控制台的话演示还是不错的。

下篇讲下WebApi跨域。

原文地址:https://www.cnblogs.com/zuqing/p/5463474.html