1. 程式人生 > >.NET WEB API關鍵過程 思維導圖

.NET WEB API關鍵過程 思維導圖

    背景說明

           近期在去面試的過程中,被問及有關WEB API的一些特性,一時竟不知該如何回答,故根據自己已知的知識,加上網上搜索的,詳細列舉了一下,期望對WEB API有一個比較開闊和全面的認知。

    關鍵要素

           在客戶端傳送一個請求,到服務端接收並處理請求,然後將資料返回,這樣一個看似簡單的過程中,究竟有哪些要素是我需要去留心的呢?

           我在整理的過程當中,發現了這樣一些基本要素,是需要去特別留心:

           1.

    介面規範
           2. 鑑權方式
           3. 關鍵物件
           4. 生命週期
           5. 介面工具

  • 介面規範

           介面規範定義了在API訪問的過程中,資料互動約定以什麼樣的方式進行。下面是我所瞭解的幾種介面規範:

    1.1.RESTful

    1.1.1.字義解釋
    ▣ REST(representational state transfer),直譯過來是“表述性狀態傳輸”,至於ful,百度翻譯是“滿滿的”、“充滿...的”。這裡所說的“state”,就是HTTP請求當中的 GET、PUT、POST 、DELETE,表述了對資源的處理意向。

    1.1.2.規範詳情
    ▣ 參考RESTful 架構詳解

    1.2.OpenAPI

    1.2.1.字義解釋
    ▣ OpenAPI從字義上解釋,是開放API,也就是說是開放給別人看的,所以介面引數具有可閱讀性,能夠生成可閱讀的文件。它也具體到了業務層面的引數定義規範。

    1.2.2.廣義解釋
    ▣ 狹義的OpenAPI是Swagger所定義的一套介面引數規範,可以快速輸出介面文件,目前的最新版本是3.0;廣義的OpenAPI,我認為只要有企業規劃了開放式的API,並約定了引數互動規則,並形成文件的持續更新方法,就是OpenAPI。

    1.2.3.拓展資料
    ▣ Swagger 2與OpenAPI 3
    ▣ 騰訊OpenAPI介面文件
    ▣ 騰訊雲直播API介面文件
    ▣ 淘寶開放平臺API文件
    ▣ 阿里巴巴開放平臺API文件
    ▣ 百度地圖Javascript API開放平臺

    1.3.RPC

    1.1.1.字義解釋
    ▣ RPC(Romote Procedure Call),遠端過程呼叫,允許一臺計算機程式遠端呼叫另外一臺計算機的子程式,不用關心底層網路通訊。它在socket的基礎上實現,也涉及到程式和部署架構層面的具體落實,所以不單是一種訪問規範,更是一種架構設計。

    1.1.2.架構詳情
    ▣ 參考RPC

  • 鑑權方式

           鑑權機制,是保護介面和資料安全的一道屏障,只有被授權、並且握有合法鑰匙(令牌)的,才能自由出入。

    1.1.IdentityServer4

    1.1.1.用途介紹
    ▣ IdentityServer4 是為ASP.NET Core 2.系列量身打造的一款基於 OpenID Connect 和 OAuth 2.0 認證框架。

    1.1.2.參考資料
    ▣ IdentityServer4中文文件

    1.2.Jwt(Json web token)

    1.2.1.用途介紹
    ▣ JWT 是一個開放標準(RFC 7519),它定義了一種用於簡潔,自包含的用於通訊雙方之間以 JSON 物件的形式安全傳遞資訊的方法。JWT 可以使用 HMAC 演算法或者是 RSA 的公鑰金鑰對進行簽名。它由Header+Payload+Signature三個部分組成。

    1.2.2.參考資料
    ▣ 前後端分離之JWT使用者認證
    ▣ JWT認證原理及使用

    1.3.OAuth(Open Authorization)

    1.3.1.用途介紹
    ▣ 首先,它是授權認證;其次,它是開放式的;第三,它簡單而又安全。典型的例子就是微信或者QQ的授權登入,無論訪問什麼資源之前,先授權登入一下。

    1.3.2.參考資料
    ▣ 詳細的接入流程可以參考 理解OAuth 2.0

  • 關鍵物件

           在面向物件的程式設計(OOP),所常用的一些設計模式當中,專注於物件的建立、物件的結構和物件的行為模式,在面向WEB API的一些關鍵物件當中,這三個方面同樣值得關注。在Visual Studio 2019的版本當中,對物件的關鍵屬性,作了一個標星,這使得一些常用的屬性會被排在前面,在輸入時可以快速定位,同時標星的屬性,也更值得關注。

    1.1.上下文物件(Context)

    1.1.1.用途介紹
    ▣ 在WEB API 整個後臺處理過程當中,很多地方都使用了上下文Context,比如HttpContext、ControllerContext、HttpActionContext等,裡面不僅攜帶了資料,還包含了發起人的IP地址、Uri請求物件、瀏覽器資訊、客戶端保留的Cookie、上文中累積的異常資訊等等。所謂的上下文,按我理解,就是上面用到了,到我這裡還要用,我還要轉交給下面用。

    1.2.過濾器物件(Filter)

    1.2.1.用途介紹
    ▣ 過濾器物件,是面向切面程式設計(AOP)概念中的一個特別重要的實現,主要應用在授權驗證、資料流的輸入和輸出過濾、異常處理、日誌收集等方面。

    1.3.控制器物件(Controller)

    1.3.1.使用說明
    ▣ 前段時間有人問我,Controller和ApiController的區別在哪裡?我一時竟不知道怎麼樣回答,這大概應該歸咎於我平時懶於作總結的緣故。
    ▣ Controller 適用於基於Razor cshtml前後端混合的開發模式,也能從上下文中找到Session;而ApiController適合於前後端分離的開發模式,一般需要植入鑑權才能保證介面和資料安全。另外ApiController 的預設路由規則是api/{controller}/{action}/{id},前面多了個“api/”的路徑。

    1.4.快取物件(Session、Cookie、Cache)

    1.4.1.用途說明
    ▣ 這三個不作過多贅述,Session是一個網站很重要的儲存,如果要使它的可靠性和穩定性更好的話,使用Redis驅動它,是一個不錯的方案。

  • 生命週期

           生命週期是一個很複雜的概念,後面有時間再專門拎出來歸納和學習。

  • 介面工具
    1.1.Fiddler

    1.1.1.用途介紹
    ▣ 可以進行資料抓包,也能模擬請求,它脫離瀏覽器,能夠跟蹤桌面應用和手機APP的請求,非常好用。

    1.2.Postman

    1.2.1.用途介紹
    ▣ 可以作為谷歌瀏覽器外掛使用,也是用來模擬傳送請求的。

    1.3.Swagger

    1.3.1.使用說明
    ▣ 定義介面規範,生成介面文件。

    1.3.2.相關文件
    ▣ Swagger介紹及使用

    1.4.YApi

    1.4.1.使用說明
    ▣ 強大的介面管理平臺。

    1.4.2.相關文件
    ▣ YApi教程
    ▣ 內網搭建YApi介面管理平臺

    思維導圖