本節概述了asp.net-web-api2是什麼,以及開發人員為什麼要使用它。
它還應該提到asp.net-web-api2中的任何大型主題,並鏈接到相關主題。由於asp.net-web-api2的文檔是新的,您可能需要創建這些相關主題的初始版本。
Web Api 2 - Hello World示例
我們將創建一個新的Web Api簡單應用程序,它使用消息和用戶名返回給我們Json。
開始吧!首先使用Visual Studio創建新的Web Api項目,然後選擇Empty Template。一定要檢查“Web Api”文件夾:
注意我沒有選擇“Web Api”模板,因為它添加了對ASP.NET MVC的引用以提供API幫助頁面。在這樣的基礎應用中,我們並不需要它。
添加模型
模型是一個C#類,代表我們的應用程序中的一些數據。 ASP.NET Web API能夠自動將模型序列化為JSON,XML或其他一些格式(取決於配置)。
在我們的應用程序中,我們將只創建一個模型,但真實世界的應用程序通常有很多。
在解決方案資源管理器中,右鍵單擊Models文件夾 。接著選擇Add ,然後選擇Class 。將類命名為“HelloMessage”。我們的模型需要兩個屬性: MessageText和UserName :
namespace WebApiHelloWorld.Models
{
public class HelloMessage
{
public string MessageText { get; set; }
public string UserName { get; set; }
}
}
添加控制器
控制器處理HTTP請求。我們的應用程序只需要一個控制器,它返回帶有Hello消息和用戶名的Json(我們將在URL中傳遞)。
在解決方案資源管理器中,右鍵單擊Controllers文件夾 。接著選擇Add ,然後選擇Controller 。在打開的窗口中,選擇Web API Controller - Empty ,然後單擊Add 。
將控制器名稱設置為“HelloController”。接下來編輯創建控制器的代碼。我們需要添加返回Hello消息的方法。
using System.Web.Http;
using WebApiHelloWorld.Models;
namespace WebApiHelloWorld.Controllers
{
public class HelloController : ApiController
{
public HelloMessage GetMessage(string name)
{
HelloMessage message = new HelloMessage
{
MessageText = "Hello my Dear!",
UserName = name
};
return message;
}
}
}
注意務必using WebApiHelloWorld.Models
添加。沒有它,您的控制器將找不到HelloMessage類。
完
就這樣!現在,您只需構建並啟動應用程序。只需按Ctrl + F5或只需按F5 (無需調試即可啟動)。 Visual Studio將推出Web瀏覽器。你需要打電話給你的控制器。為此,請在URL“/ api / hello?name = John”的末尾添加。結果應該是:
{
"MessageText": "Hello my Dear!",
"UserName": "John"
}
有關設置或安裝asp.net-web-api 2的詳細說明。
什麼和為什麼?
Asp.Net的Web API2是Web API的最新版本。使用Asp.Net框架提供的所有優點,這是一種實現RESTful Web服務的簡單方法。一旦理解了REST的基本原理,就可以很容易地實現Asp.net Web API2。 Web API2構建於Asp.Net的模塊化可插拔管道模型之上。這意味著當託管Web API2的服務器收到請求時,它首先通過Asp.Nets請求管道。如果您發現默認功能不足以滿足您的需求,則可以輕鬆添加自己的模塊。隨著ASP.net vNext
上的最新公告,這也意味著您可以在Windows Server之外託管Web API2,從而打開一系列用例。詳情請見此處 。
怎麼樣?
Web API2使用MVC中的Controller和Action概念。資源直接映射到控制器;您通常會為每個主要數據實體(產品,人員,訂單等)使用不同的控制器。 Web API2使用Asp.Net路由引擎將URL映射到控制器。通常,API保存在/api/
route中,這有助於區分API控制器與同一網站中的其他非API。
操作用於映射到特定的HTTP謂詞,例如,您通常會有一個返回所有實體的GET操作。此操作將響應/api/Products
(其中'products'是您的控制器),看起來像這樣:
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
您可能還有一個GET
操作,該操作接受特定ID
並返回特定實體。它會響應/api/Products/81
,看起來像這樣:
public string Get(int id)
{
return "value";
}
使用Web API有很多隱藏的好處,您可能沒有意識到,但實際上為您節省了大量的工作。
Web API2是'One Asp.Net'的一部分
Web API2是“One Asp.Net”系列的一部分,這意味著它本身支持您當前可能與MVC或Web表單一起使用的所有優秀共享功能,這包括(這些僅是幾個示例):
序列化和模型綁定
Web API2默認設置為以XML或JSON格式提供響應(默認為JSON)。但是,作為開發人員,您不需要進行任何轉換或解析 - 您只需返回一個強類型對象,Web API2將其轉換為XML或JSON並將其返回給調用客戶端,這是一個名為Content Negotiation的過程。這是一個返回強類型Product對象的GET
操作的示例。
public Product GetProduct(int id)
{
var product = _products.FirstOrDefault(p => p.ID == id);
if (product == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return Request.CreateResponse(HttpStatusCode.OK, product);
}
這也適用於使用稱為模型驗證的功能的傳入請求。通過模型驗證,Web API2能夠驗證傳入的響應正文數據並將其解析為強類型對象,以便您在代碼中使用。這是模型綁定的一個示例:
public HttpResponseMessage Post(Product product)
{
if (ModelState.IsValid)
{
// Do something with the product (not shown).
return new HttpResponseMessage(HttpStatusCode.OK);
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
}