標籤:相關 collect parameter 針對 bcb 理解 threading 批評 img
OWIN的介紹
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是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(); } } }}
示範
DHC是一個測試HTTP/REST API的線上工具,https://www.sprintapi.com/dhcs.html,本地測試需在Google商店下載擴充外掛程式。
同樣也可通過瀏覽器來直接發送GET請求,如下:
其中localhost:9000/api/query/ok 對應OWIN路由配置中的 routeTemplate: "api/{controller}/{id}"。
指定請求內容格式為json
上述是針對API請求的路由規則(routeTemplate: "api/{controller}/{id}"),下面簡述在普通MVC頁面請求的路由規則(routeTemplate: "{controller}/{action}/{id}")下,自訂請求方式的方法。
-首先修改Startup中的路由規則,在{controller}後加{action},其後的{id}則會對應action中的參數。修改後的Startup如下:
-其次在之前的queryController類中添加自訂的方法,先聲明請求方式([HttpGet]、[HttpPost]、[HttpDelete]、[HttpPut]等方法特性),然後添加自訂方法,如下:
-示範
有些地方不夠詳細,我會後期補充,理解有誤的地方,還請各位批評指正。
【C#】使用OWIN建立Web API