當前位置:首頁 » 密碼管理 » webapi訪問資料庫

webapi訪問資料庫

發布時間: 2024-01-28 16:26:46

Ⅰ WebApi 2 路由機制

.net中包含的路由有兩種,第一種是MVC模式的按url匹配action,第二種是WebApi模式的按http請求的方法匹配action,本文我們學習WebApi的路由模式。

首先新建一個WebApi項目,選擇ASP.NET Web應用程序(.NET Framework)

這里我們首先來看WebApi的基礎配置 WebApiConfig.cs ,其路徑為 /App_Start/WebApiConfig.cs

首先以瀏覽器啟動webapi項目

會發現頁面顯示403,這是很正常的,因為我們在新建項目的時候沒有加入MVC,所以沒有可視化的view頁面,不過我們卻拿到了這個項目的 埠號

為了更加方便直觀的看我們的介面請求,我們選擇postman,首先在項目新建一個 controller

通過以上的操作,我們就搭建好了一個webApi2的項目工程,後面我們就在這個工程的基礎上進行webApi 2的開發和學習。

webApi的路由過程主要經歷了如下三步

WebApiConfig.cs 這個文件是進行路由表的核心文件, WebApiConfig 裡面只有一個方法,這個方法在 Global.asax 文件里的 Application_Start() 方法被調用, Global.asax 文件是一個全局文件,當我們網頁啟動時就會去執行它。 Register(HttpConfiguration config) 方法是配置WEB API路由的。

因此 在webAP工程啟動的時候,會執行 Global.asax ,這個文件裡面注冊了 WebApiConfig.cs 的一系列初始化配置,從而實現了webapi。

WebApi 2 框架使用路由表。 並由Web API 的 Visual Studio 項目模板創建默認路由

轉到 MapHttpRoute 的定義,可以看到它有4個重載

分別來看看各個參數的作用

webApi2工程自動為我們創建了默認的路由

經過上面的講解,我們知道了匹配的URL是 api/{controller}/{id}
那麼我們在實際的請求中應該如何請求

新建一個 StudentsController

依次對以下地址進行請求

總結:

默認路由的缺點

如下

添加如下的方法(action)

得到了一下的結果

我們來看看這個請求是如何進行匹配的,首先找到 /App_Start/WebApiConfig.cs

按照路由模板來看,我們請求的路由沒有 action 名稱,那麼它是怎麼進行匹配的呢?
其實當我們訪問 http://localhost:65066/api/student 這個url的時候,webapi會自動去匹配 api/{controller}/{id} 這個模板,在這個路徑中,student是controller,那麼它又是怎麼去找到 getStudentName 這個action的呢?明明我們都沒有傳action這個參數,其實Webapi的路由規則是通過http方法去匹配對應的action,我們請求這個地址是用的 GET 方法,那麼webapi會找Order這個控制器裡面的get請求的方法,同事我們的這個 getStudentName 是以 get 開頭的,它符合了webapi的匹配規則,於是就請求成功了,但前提是你寫的方法必須是以get開頭的,如果當前這個controller一個get開頭的都沒有,那麼就顯示 請求的資源不支持 http 方法「GET」

當然不以get開頭的前提是你必須加上 [HttpGet] 這個特性,webapi才知道你這個是get的請求方法,就能正確進行匹配。

然後我們再回到 /App_Start/WebApiConfig.cs ,看下裡面 MapHttpRoute 的各個參數的含義,首先轉到它的定義,發現它是 HttpRouteCollection 的擴展方法, MapHttpRoute 有4類重載

在 WebApiConfig.cs 裡面修改為如下的路由模板

介面請求如下

通過 action 的名稱來匹配很好理解,上面的 StudentName() 是方法名, webApi 會默認它就是 action 的名稱,如果你想要方法名和 action 的名稱不一致,你也可以自定義 action 的名稱,這個可以通過特性 ActionName 來實現,如下:

首先看路由模板

對於同請求類型,同請求參數的請求,會出現 不傳參數,找不到匹配的資源 傳了參數,但是找到了與該請求匹配的多個操作 的問題,如下所示

解決以上的辦法有兩種

如果要使用特性路由,首先在 WebApiConfig.cs 的 Register 方法裡面必須先啟用特性路由(一般情況下,當我們新建一個 WebApi 項目的時候,會自動在 Register 方法裡面加上這句話。)

特性路由的目的是為了解決我們公共路由模板引擎解決不了的問題。一個action定義了特性路由之後,就能通過特性路由上面的路由規則找到。
只要出現了特性路由,匹配的規則是按特性路由來的
修改studentController如下

參考

參考

路由前綴的一般的做法是在控制器上面使用特性 [RoutePrefix] 來標識。
但是需要注意路由前綴不能以 / 開頭

Ⅱ MVC WebApi在調試開發下訪問正常,部署到伺服器訪問不到介面

1、伺服器是否正常啟動(查看日誌)
2、伺服器的IP+PORT是否可以訪問,查看埠是否被佔用
3、若服務正常啟動,埠也可以訪問,查看你的訪問路徑是否正確(部署後的上下文webcontent是否與調試中一致)
4、訪問不到有很多原因,要看你面對的具體問題去排查,比如報錯信息之類~

熱點內容
安卓光遇版本怎麼看 發布:2024-11-28 06:29:52 瀏覽:870
oraclesql加密 發布:2024-11-28 06:29:15 瀏覽:900
圖片緩存工具 發布:2024-11-28 06:29:15 瀏覽:962
有文件夾刪不掉怎麼辦 發布:2024-11-28 06:22:50 瀏覽:526
python3怎麼用 發布:2024-11-28 06:10:58 瀏覽:255
安卓盒子內存小怎麼辦 發布:2024-11-28 06:10:57 瀏覽:809
車企減配哪些配置好 發布:2024-11-28 05:55:18 瀏覽:674
傳說對決上傳照片 發布:2024-11-28 05:49:18 瀏覽:465
解壓筆怎麼畫 發布:2024-11-28 05:49:17 瀏覽:518
預編譯查詢 發布:2024-11-28 05:32:35 瀏覽:313