Owin搭建webapi的http服务器
1、新建netformework 控制台项目ConsoleTestOWIN,使用NuGet,搜索 owinselfhost ,添加Microsoft.AspNet.WebApi.OwinSelfHost
2、选择项目ConsoleTestOWIN,右键添加OWIN Startup 类
代码如下:
using System.Web.Http;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(ConsoleTestOWIN.Startup))]
namespace ConsoleTestOWIN
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// 有关如何配置应用程序的详细信息,请访问 https://go.microsoft.com/fwlink/?LinkID=316888
HttpConfiguration configuration = new HttpConfiguration();
configuration.Routes.MapHttpRoute(
name: "default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
app.UseWebApi(configuration);
//注意:
//1、defaults: new { id = RouteParameter.Optional }
// 设置http://ip:port/api/{controller}/{id}中的id是否需要
//2、如果 路由模板是 routeTemplate: "api/{controller}/{action}/{id}",,
//访问:http://ip:port/api/{controller}/{action}/{id}
//如果 路由模板是 routeTemplate: "api/{controller}/{id}",,
//访问:http://ip:port/api/{controller}/{id}
//以上两种 路由模板设置是有区别的
}
}
}
3、选择项目ConsoleTestOWIN,右键添加TestController 类
代码如下:
using System.Collections.Generic;
using System.Web.Http;
namespace ConsoleTestOWIN
{
public class TestController: ApiController
{
[HttpGet]
public IEnumerable<string> Get()
{
List<string> list = new List<string> { "111", "222", "333" };
return list;
}
[HttpGet]
public string Get(int id)
{
return $"收到数据{id}";
}
public string Post([FromBody] string data)
{
return data;
}
public string Delete(int id)
{
return $"delete数据{id}"; ;
}
}
}
4、项目ConsoleTestOWIN的Program.cs中的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Owin.Hosting;
using Owin;
namespace ConsoleTestOWIN
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("启动服务。。。");
WebApp.Start<Startup>("http://localhost:8090/");//注意之后的斜杠不要忘记了
//string baseAddress = "http://127.0.0.1:8090/";
//WebApp.Start<Startup>(url: baseAddress);
Console.WriteLine("服务启动成功。。。");
Console.ReadLine();
}
}
}
5、运行项目ConsoleTestOWIN,地址栏中输入http://localhost:8090/api/test/get/和http://localhost:8090/api/test/get/2效果如下:
哈哈