001.開始使用ASP.NET Web API 2(一)

來源:互聯網
上載者:User

標籤:des   blog   http   使用   檔案   width   

ps:文章只是講解一些如何創建Web API的步驟和一個簡單樣本,沒有涉及到路由選擇和方法選擇,後續的一篇是專門講解這方面的。兩篇是一起翻譯的,其實兩篇應該一起發,但一起又會很長,就周六發吧,這篇當是我的見習基礎翻譯文章吧。)

1.前言

HTTP不僅僅致力於網站的頁面,它還是一個強有力的平臺,用來提供服務和展現數據。HTTP是簡單、靈活且無處不在。絕大多數的能想到的平臺都有HTTP的類庫,所以HTTP服務能夠應用於瀏覽器端,移動端以及傳統型程式等廣泛的客戶端。ASP.NET WEB API是能由.NET架構提供的一項技術,在本教程中,你將會使用ASP.NET Web API來建立用來返回產品列表的API。

2.建立API工程

在本教程中,你將會使用ASP.NET Web API創建返回產品列表的API。首先在前端頁面,使用jQuery來顯示結果。如下圖

打開vs,選擇建立Web API工程。根據不同的vs版本,建立的方法可能有些不同,但大同小異,大家可自行建立。

3.添加數據模型

一個模型對象在程式中代表了你的數據。ASP.NET Web API能夠了自動的序列化你的模型到JSON、XML或者其它的格式,然後將這些序列化後的數據寫到HTTP的報文訊息中。直到客戶端能夠讀到序列化後的數據,能還原序列化成對象。大多數客戶端都具有這樣的能力。此外,通過設置在報表訊息中請求的頭能返回相應客戶端所需要的數據。(ps:簡單的樣本文章中,一些個概念還是可以溫故知新的,比如序列化和還原序列化)

讓我們開始建一個簡單的模型來表示一個產品。

檔案命名為Product,添加下列的屬性到Product類

 1 namespace ProductsApp.Models 2 { 3     public class Product 4     { 5         public int Id { get; set; } 6         public string Name { get; set; } 7         public string Category { get; set; } 8         public decimal Price { get; set; } 9     }10 }

4.添加API控制器

在Web API中,控制器是處理HTTP請求的對象,我們將添加一個通過產品ID返回該產品資訊的一個控制器。

(ps:按步驟點吧,原文圖片截圖挺多,能少用就少用吧)

命名為ProductsController,代碼如下

namespace ProductsApp.Controllers{    public class ProductsController : Controller    {        Product[] products = new Product[]         {             new Product{Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1},            new Product{Id = 2, Name = "Tomato Soup", Category = "Groceries", Price = 1},            new Product{Id = 3, Name = "Tomato Soup", Category = "Groceries", Price = 1}        };        public IEnumerable<Product> GetAllProducts()        {            return products;        }        public IHttpActionResult GetProduct(int id)        {            var product = products.FirstOrDefault((p) => p.Id == id);            if (product == null)            {                return HttpFound();            }            return Ok(product);        }    }}

為了保持案例簡單,產品數據存儲在這個控制器中一個封閉的數組,當然在真實的程式中,你可以通過從數據庫中或者其它的途徑查詢到數據。

在控制器中定義了兩個方法用來返回產品

GetAllProducts方法返回一個IEnumerable<Product>類型的產品列表

GetProduct方法返回一個產品通過ID

那就對了。我們已經有了Web API了。每一個方法的訪問如下。

相要更多知道關於Web API如何選擇控制器的方法,可以看控制器路由選擇

(ps:下一篇就是這個,上面的代碼其實是有不通的地方,我用的是vs2012,可能沒Web API 2的類庫,所以打不到一些類,網上找了方法,使用NuGet安裝WebApi,但安裝失敗,有知道的話,可以發表下自己的解決辦法。)

5.顯示數據

(ps:靜態的頁面還是不附了,主要的是js,作者使用的是jQuery)

 1 var uri = ‘api/products‘; 2  3     $(document).ready(function () { 4       // Send an AJAX request 5       $.getJSON(uri) 6           .done(function (data) { 7             // On success, ‘data‘ contains a list of products. 8             $.each(data, function (key, item) { 9               // Add a list item for the product.10               $(‘<li>‘, { text: formatItem(item) }).appendTo($(‘#products‘));11             });12           });13     });14 15     function formatItem(item) {16       return item.Name + ‘: $‘ + item.Price;17     }18 19     function find() {20       var id = $(‘#prodId‘).val();21       $.getJSON(uri + ‘/‘ + id)22           .done(function (data) {23             $(‘#product‘).text(formatItem(data));24           })25           .fail(function (jqXHR, textStatus, err) {26             $(‘#product‘).text(‘Error: ‘ + err);27           });28     }

為了得到產品列表,發送一個請求到”/api/products”

jQuery中的getJSON方法發送一個AJAX請求,作為返回的數據為包含JSON對象的數組。done 方法標識了一個回調函數,當請求成功時執行。

(對應是頁面加載DOM完成的ready回調)

我們依然使用getJSON方法來發送請求,但這次在URL中放上一個id,那請求過來的數據將會是一個產品的資訊。

(對應是find函數)

(ps:上面的一些知識對於我來說還是比較好理解的,更不用說大家了,周六晚會發一篇路由的選擇,路由方法選擇還是挺有規律的。由淺入深,以後會多看看更更深層次的文章。)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.