聊聊asp.net中Web Api的使用


扯淡

    隨着app應用的崛起,后端服務開發的也越來越多,除了很多優秀的nodejs框架之外,微軟當然也會在這個方面提供更便捷的開發方式。這是微軟一貫的作風,如果從開發的便捷性來說的話微軟是當之無愧的老大哥,只是魚和熊掌不能兼得,各種語法糖帶來開發的便利勢必會犧牲程序運行的性能,這是無可避免的,通用和效率永遠是需要程序員去取舍的話題。扯淡到這就完了,下來就聊聊今天的主角web api,web api 是mvc4.0之后出現的一種技術吧,他的創建和帶來的便利我就不介紹了。這邊文章主要聊聊,我對web api開發的一些理解。

 

話題一:[FromBody]特性修飾符

FromBody是一個修飾參數的特性,比如:public void Post([FromBody]string name),那么他的作用是什么呢,其實他的作用是查詢post請求中參數為name的值。

要注意的是:[FromBody]只能修飾單個參數,如果是多個參數的話,就要封裝成對象進行數據專遞了,比如:public void Post([FromBody]string name,[FromBody]int id)是取不到值的,要把id和name封裝成Userinfo對象,使用 public void Post([FromBody]Userinfo user)進行調用。

 

話題二:post傳遞多個不同對象的參數

已經post請求需要使用[FromBody]特性修飾符接收,但是FromBody只能接收單個參數,如果需要傳遞不同對象的輸出就比較麻煩了,新建實體對象成本太大,也不能完全適應適應的類型,這個時候需要使用JObject來處理,代碼如下:

jQuery.post("/Api/Userinfo/Add/", {
    mobile: "18049579804",
    pwd: "123456",
    smsCode: "12346",
    t: new Date().getTime()
}, function (data) {
    if (data) {
        document.writeln(data);
    }
});
public string Add([FromBody]JObject pdata)
{
    string mobile = Convert.ToString(pdata["smsCode"]);
    string pwd = Convert.ToString(pdata["pwd"]);
    string smsCode = Convert.ToString(pdata["smsCode"]);
}

 

話題三:請求方式(Get & Post)

關鍵字區分:Get請求或者Post請求,可以用自身的關鍵字來區分,比如:GetUser(int id)肯定為get請求,Getxxx(params param)等格式為Get請求,post同理。當然還有一種方式,是沒有關鍵字修飾的方法,比如:FindUser這種情況下,這種請求下默認是Post請求的Get請求就會報405的錯。

 

話題四:返回json格式的結果

這個會簡單設置返回值為Net自帶的Json格式即可,可以返回JObject或JArray都是可以用ajax接收json對象的。代碼如下:

public JObject PostFindUser([FromBody]Userinfo user)
{
    JObject res = new JObject();
    res["name"] = string.Format("{0}是好人~", user.Name);
    return res;
}

 

話題五:路由設置

本身的路由不是很好,需要設置WebApiConfig.cs配置為:控制/動作/參數

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{Action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

 

 

 題外話:webapi獲取http header信息代碼:Request.Headers.GetValues("xxx")

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM