Web API 路由訪問設置


前段時間一直致力於MVC webapi 技術的研究,中途也遇到過好多阻礙,特別是api路由的設置和URL的訪問形式,所以針對這個問題,特意做出了記錄,以供日后有同樣困惑的大蝦們借鑒:

在Mvc WEBAPI中的APP_STARTA文件夾中有一個默認的api路由config文件設置:

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

從中我們可以看出,api的路由訪問是沒有對應的action方法名的,默認的訪問都是對應的controller的名稱。因為api controller都有對應的類型的命名規則,get,post,以及對應的帶參數的get,post方法等等,系統會根據URL請求的類型和參數來判別該使用哪個action方法,所以我在項目運行的時候,就感覺不是很方便,當要處理的方法過多,甚至經常會遇到的情況就是,請求類型相同,然后參數也相同的情況,這樣系統就有可能很混亂,找不到正確的action方法,得不到我們想要的效果。為此,在適當的情況下,我們可以修改對應的默認路由設置,把路由改為:

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

通過給默認路由加上一個action,使其能對應到相應的方法名中。

然后再在前台通過Ajax的方式訪問后台對應的action方法:

  function handHandler() {      

     $.ajax({             

   type: 'POST',             

   data: JSON.stringify(document.getElementById("handHandler").value),              

   url: "/api/Test/HandHandler",

    contentType: "application/json",                            

    success: function (results) {

                  alert(results);              

}          

});      

}

這是一個默認的帶參數的提交post類型的訪問方式,后台數據代碼我就不具體列了。這里特別強調的一個是,get方式訪問和post方式訪問的一個不同點,當我們執行帶參的URL訪問的時候,后台對應的get方式的action函數參數可以不需要帶[FromBody]的前綴修飾,而post方式的帶參數URL需要加上,不然是找不到你想要的action的,如下格式:

[HttpPost]
        public string HandHandler([FromBody]string requestData)
        {

        }

 這就是Mvc webapi的整個路由的額設置和訪問過程。


免責聲明!

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



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