C 淨化版WebApi框架

2022-01-10 06:51:07 字數 2316 閱讀 9517

前言

我們都知道webapi是依賴於asp.net mvc的httproutecollection進行路由 。

但webapi和mvc之間是沒有依賴關係的, webapi的基類apicontroller繼承於ihttpcontroller,而mvc的基類controller 繼承於icontroller。

webapi和mvc雖然都使用httproutecollection進行路由,但webapi經歷的通道是servicescontainer,而mvc經歷通道還是原始的ihttpmodule。

但用visual studio建立的mvc webapi專案通常會帶很多功能,而這些功能,很多是我們並不想用的,或者我們想用其他開源控制項代替它。

而直接建立空專案的webapi又太原始。

所以,讓我們編寫乙個簡潔版本的webapi吧。

淨化版webapi預覽

首先,我們先看下淨化版webapi的結構。

如上圖所示,**結構很簡單,除開配置檔案,整個web專案只有2個檔案;而需要被呼叫的webapi都被封裝到了webapi程式集中了。

接下來我們一起看下編寫這個淨化版webapi的過程吧。

淨化版webapi編寫

webapiconfig

首先,引入必要的dll,如下圖所示。

然後,我們編寫web專案的寫webapiconfig;**如下:

public static class webapiconfig

/",defaults: new

); }

}

可以看到webapiconfig是個靜態類中,我們在其中建立了靜態註冊方法register,在方法內,我們主要在做一件事,那就是為httpconfiguration物件做配置。

而在配置中,我們將wepapi的路由配置成了webapi//,也就是說,我們的webapi未來的訪問位址將為【http://localhost:5180/webapi/login】這樣的模式。

在webapiconfig類中,我們還用到了這樣乙個類webapiattribute,我們在為httpconfiguration物件的filters屬性,新增了這個類的物件。

通過filters屬性這個字樣,我們可以得出,這個類主要應用應該是過濾。

下面我們看一下這個類的**:

}通過閱讀**,我們應該可以發現,這是乙個aop的過濾器。

在執行真正webapi之前,會先進入這裡進行過濾,過濾通過的api,才會呼叫 base.onactionexecuting(actioncontext)方法進行呼叫和執行。

結束呼叫同理,結束呼叫前,會在該類中進行攔截和過濾處理。

配置檔案

webapiconfig編寫結束了,現在,我們需要將這個靜態類註冊到專案中。

開啟global.asax檔案,編寫如下**:

可以看到,我們已通過configure方法,將我們編寫好的webapiconfig新增到了全域性配置中了。

}到此web專案的編寫就完成了,下面我們在webapi程式集中,編寫個簡單的webapi,**如下:

public class logincontroller : baseapicontroller

; }

catch (exception ex)

}}public class baseapicontroller : apicontroller

}

然後我們執行**,進行webapi訪問。

如上圖所示,我們的webapi訪問成功。

到此c#淨化版webapi框架就介紹完了。

,非常感謝!

webapi快速開發框架

一 webapi快速開發框架搭建之後臺 從0開始搭建webapi基本框架 許可權控制 異常管理 日誌管理 快取管理 原始碼 webapi框架搭建 建立專案 一 webapi框架搭建 建立專案 二 以iis為部署環境的配置 webapi框架搭建 建立專案 三 webapi owin webapi框架搭...

RC版WebApi引數繫結

之前看了寫的httpclient webapi的乙個例子,參考他的 子階寫了乙個,結果請求服務獲取的引數都是空的,而將引數繫結在url中則可以正常得到引數,折騰好久,終於在網上找到了相關資料,原來rc版webapi在引數繫結上發生了些變化。rc版的webapi引數繫結器分為兩種 1.model bi...

WebApi框架增刪改查前端

用html頁面 前端jquery 先引入 const uri select let todos null function getcount data el.text data name else document ready function 繫結事件 function deleteitem id...