OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 处事器和 .NET Web 应用之间界说了一套标准的接口, 其目的是为了实现处事器与应用之间的解耦,使得便携式 .NET Web 应用以及跨平台的愿望成为现实, 标准的 OWIN 应用可以在任何 OWIN 兼容的处事器上运行, 不再依赖于Windows和IIS 。
OWIN的使用
创建项目
向项目中添加Microsoft.AspNet.WebApi.Owin 和 Microsoft.AspNet.WebApi.Owin Self Host包(Self Host 用于开启OWIN Host,设置监听接受Http请求)
添加Startup类
Startup是OWIN约定的,用于对OWIN做相关配置的,代码如下:
using Owin; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Http; namespace OwinTest { public class Startup { public void Configuration(IAppBuilder appBuilder) { // 创建 Web API 的配置 var config = new HttpConfiguration(); // 启用符号路由 config.MapHttpAttributeRoutes(); // 默认的 Web API 路由 config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); // 将路由配置附加到 appBuilder appBuilder.UseWebApi(config); } } }
新建Controllers文件夹,添加queryControllers类
凭据 Web API 项目的约定,在项目中添加一个名称为 Controllers 的文件夹,然后新建 一个queryController类,设置其基类为 System.Web.Http.ApiController ,作为示例,其内容与 Visual Studio 自带的 Web API Controller 模板一致,包罗4种请求方法(GET/POST/PUT/DELETE),用于演示,重写GET要领(直接返回请求参数)和POST要领(接受实体类参数直接返回),queryController代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Http; namespace OwinTest.Controllers { public class queryController : ApiController { // GET api public string Get(string id) { return id; } // POST api public DeParams Post(DeParams dp) { return dp; } // PUT api public void Put(int id, string value) { } // DELETE api public void Delete(int id) { } } }
在Program.cs文件中的 Main 要领中添加OWIN启动要领,代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; using Microsoft.Owin.Hosting; namespace OwinTest { class Program { static void Main(string[] args) { string baseAddress = "http://localhost:9000/"; // Start OWIN host using (WebApp.Start<Startup>(url: baseAddress)) { HttpClient client = new HttpClient(); Console.WriteLine(baseAddress); Console.ReadLine(); } } } }
演示
启动处事端措施
发送GET请求
DHC是一个测试HTTP/REST API的在线工具,https://www.sprintapi.com/dhcs.html,本地测试需在Google商店下载扩展插件。
同样也可通过浏览器来直接发送GET请求,如下:
此中localhost:9000/api/query/ok 对应OWIN路由配置中的 routeTemplate: "api/{controller}/{id}"。
发送POST请求
指定请求内容格局为json
添加自界说请求