我的第乙個webapiDemo

2022-05-02 02:57:07 字數 2064 閱讀 3220

最近在面試,總是被問到有沒有接觸過webapi 或者問webapi和mvc 的區別,今天看了看,原來如此,自己理解感覺webapi和webservice一樣像是實現soa 的一種形式,也可以理解為服務或者是一種資料請求框架。

下面簡單的寫一下我第乙個webapi 例項過程。

軟體環境:vs2012 

1、建立asp.net mvc4 web 專案->點選ok->在「新asp.net mvc 4專案」對話方塊中,選擇「web api」並點選「ok」.

2、add a model. 名為product.cs. 賦幾個屬性,**為          

namespace hellowebapi.models

public string name

public string category

public decimal price }}

3、add a controller.名為productscontroller.(建立控制器時,模板選擇空api控制器),然後實現方法,如下namespace hellowebapi.controllers

, 

new product ,

new product

};//無參get方法 返回產品列表

public ienumerablegetallproducts()

//引數為id的get方法 返回單個產品

public product getproductbyid(int id)

return product;

}//引數為category的get方法

public ienumerablegetproductsbycategory(string category)}}

4、現在我們就有了乙個可以工作的webapi ,控制器上每乙個方法都對映到乙個url上,如下:

6、現在試著瀏覽下面兩個url:

第乙個應當返回id等於1的詞條。第二個應當返回category等於「hardware」的所有產品的列表(這裡,只有乙個詞條)。

7、現在以乙個前台頁面呼叫api為例,找到view下面的home->index.cshtml檔案,寫入如下**:         

8、直接執行,得到如下頁面:

表明我們的http服務已經在工作。你可以在文字框中輸入id並通過這個id獲得乙個產品。

9、理解路由

對於每乙個http訊息,asp.net web api框架都會通過諮詢乙個路由表來決定接收該請求的控制器。在建立乙個新的web api專案時,該專案便會包含乙個類似於下面這 樣的預設路由:

/api//

和部分是佔位符。當框架看到乙個與此模式匹配的uri時,它按以下步驟查詢控制器方法:

其中第乙個示例,「products」匹配名為productscontroller的控制器。該請求是乙個get請求,因此框架在productscontroller上查詢乙個名稱以「get…」開頭的方法。進一步地,這個uri不包含可選的片段,因此,框架查詢的是乙個不帶引數的方法。於是,productscontroller->getallproducts滿足所有這些需求。

第二個示例與此相同,只是該uri包含了選項。因此,框架會呼叫getproduct,它有乙個名稱為id的引數。另外,這個uri的值「5」會作為這個id引數的值進行傳遞。框架會根據該方法的簽名,自動地把這個「5」轉換成int類。

這只是個簡單的demo,個人目前只理解到這麼多,希望能運用到更多更好的專案中,可以更加熟練。

我的第乙個程式

我的第乙個vc程式終於寫完了,花了2周,之前從沒有用vc寫過程式,也沒讀過什麼程式,只是在看書,看了幾百頁 mfc windows程式設計 正好有個機會,老師讓寫個vc程式,就試著寫了。程式的功能是不同地方的access的更新的記錄整合到一台機子上的access中,支援斷網自動連線,用的是socke...

我的第乙個部落格

我是乙個有點脫離時代的年輕人,沒有iphone,不玩微博,沒有崇拜的明星,不是任何人的粉絲。前幾天我的乙個領導告訴我,應該多總結,可以開個微博,把記錄的東西時不時拿出來複習一下,慢慢就會積累出很多財富。所以我開了第乙個部落格,當然遠不如微博那麼新潮。我想感謝我的這位領導,在我的職業生涯中,他是我的領...

我的第乙個c

上機內容 c 程式的編寫和執行 上機目的 掌握簡單c 程式的編輯 編譯 連線和執行的一般過程 我的程式 cpp view plain copy print?程式的版權和版本宣告部分 檔名稱 test.cpp 作 者 徐威楊 完成日期 2014 年 10 月 28 日 版 本 號 v1.0 對任務及求...