• 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跨域。

  • 相关阅读:
    分布式环境下限流方案的实现redis RateLimiter Guava,Token Bucket, Leaky Bucket
    将bloomfilter(布隆过滤器)集成到scrapy-redis中
    Redis Cluster 分区实现原理
    OEM status|start|stop
    oracle 11g SQL Developer instead of isqlplus
    oracle Instance status: READY–lsnrctl status|start|stop
    oracle tns in linux
    Oracle 多实例如何通过EM进行访问-portlist.ini
    oracle command
    oracle .bash_profile
  • 原文地址:https://www.cnblogs.com/zuqing/p/5463474.html
Copyright © 2020-2023  润新知