【C#】使用OWIN建立Web API

來源:互聯網
上載者:User

標籤:相關   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類

   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

 

  • 添加自訂請求

上述是針對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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.