Beetlex服務框架之Webapi版本訪問控制

2022-01-13 11:43:11 字數 2121 閱讀 3030

在應用服務中api更新是很普遍的事情,為了服務良好地運作很多時候需要新舊版本同時相容;為了應對這一系列的需求fasthttpapi在新版中強化了url重寫機制來支援api訪問版本控制,由原來固定的重寫規則調整成支援動態資料的重寫規則,主要支援網域名稱,header和querystring等不同值進乙個重寫的定義。接下來講解如何通過fasthttpapi來控制不同版本的api訪問

[controller(baseurl = "

api"

)]

public

class

api at ";}}

[controller(baseurl = "

api/v2")]

public

class

apiv2

at [v2]";}}

以上是兩個不同版本的api功能,訪問的url分別是/api/hello/api/v2/hello

元件支援依據網域名稱來重寫url,針對這情況可以定義乙個v2.beetlex.com來訪問/api/v2/hello,在程式啟動的時候加入乙個重寫

static

void main(string

args)

, b =>

", "

/api/v2/");

},typeof

(program).assembly);

});builder.build().run();

}

只要是通過v2.beetlex.com訪問的/api/重寫到/api/v2/,重寫後訪問的結果如下:

一般情況很少會用網域名稱來區分,用網域名稱區分的場更多是正式和測試api的相容部署,測試完成後會替換原則有的api;後面會講述如何接管舊的請求到新的版本中。

其實在header中新增則是對整個url是沒有任何影響的,元件可以這樣定義這個重寫規則

static

void main(string

args)

, b =>

", "

/api/v2/")

},typeof

(program).assembly);

});builder.build().run();

}

以上是配置乙個version變數,只要這個變數是等於v2的情況則會觸發這個重寫規則;元件會先從請求頭中獲取,獲取不了的情況再從url請求資料中獲取。使用效果如下:

由於瀏覽器不方便新增header,通過postman新增版本頭來測試

如果服務是乙個新舊版本替換的情況下則可以重寫url,把訪問舊的api路徑指向新的api路徑。

其實元件urlrewrite是支援執行時動態更新,只需要做個管理頁即可隨時調整api不同版本的訪問處理。

BeetleX服務閘道器之服務發現與泛網域名稱路由

在新版本的服務網關中提供了服務發現和泛網域名稱路由解決功能,服務發現可以在無須配置的情況下實現服務自動註冊到閘道器中解脫對服務配置的繁瑣工作 而泛網域名稱路由則可以針對不同的網域名稱制定不同的負載規則。閘道器需要維護相關負載的伺服器,手動新增相對來說是一件比較麻煩的工作 為了解決這一問題元件擴充套件...

Web伺服器與Web框架

http的工作流程 http服務端監聽埠,等待來自客戶端的請求 http客戶端與http伺服器建立tcp連線 http客戶端發起http請求 http服務端響應請求 關閉http連線 web伺服器的作用 上面的例子中與瀏覽器進行互動的http伺服器就是web伺服器。而web伺服器的主要工作也就是響應...

030301 web框架之springmvc入門

mvc是一種用於設計建立 web 應用程式表現層的模式。springmvc框架是spring框架的乙個模組,是基於mvc的表現層框架,用於web專案的開發。springmvc在三層框架中的表現層 學習springmvc三大元件,知道其作用及細節即可。作用 根據瀏覽器請求的url,找到處理器方法 作用...