Looking for asp.net-web-api2 Answers? Try Ask4KnowledgeBase
Looking for asp.net-web-api2 Keywords? Try Ask4Keywords

asp.net-web-api2asp.net-web-api2入門


備註

本節概述了asp.net-web-api2是什麼,以及開發人員為什麼要使用它。

它還應該提到asp.net-web-api2中的任何大型主題,並鏈接到相關主題。由於asp.net-web-api2的文檔是新的,您可能需要創建這些相關主題的初始版本。

Hello Web Api

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”。我們的模型需要兩個屬性: MessageTextUserName

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?

什麼和為什麼?

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);
     }
 }