日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

服务框架之接口路由(路由接口 子接口)

發布時間:2023/12/24 综合教程 47 生活家
生活随笔 收集整理的這篇文章主要介紹了 服务框架之接口路由(路由接口 子接口) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

無論是web server框架還是rpc框架,接口作為服務的對外入口,其背后可能包含復雜的后端流程,不限于業務邏輯處理、數據處理&操作、基礎能力調用等。所以接口和“后端流程”之間必然存在著映射交付關系。

原理

路由機制
以下均以web框架為例,rpc框架相比web更為直接,即指定方法調用

http api 請求 和 rpc調用本質上都是通過網絡完成通信雙方交互。我們不局限在業內常見的平臺化、微服務化中對兩者的應用,其實可以這樣泛化理解所有“交互”有如下要素:

  • 協議

通信雙方約定好的通信規則。
統一的通信規則能夠保證通信的準確性,避免二義性;
根據交互場景和限制條件選擇合適的協議,例如app中前后端交互常用http/https,IoT場景中就可能使用MQTT/CoAP,可以提高通信效率,減低通信成本;

  • 通信內容

通信的任務就是傳遞信息,無非就是數據,結構化數據、非結構化數據都有相應的表示形式,輔之以眾多協議,能夠有效地被組織起來進行傳輸。例如,最常見的http請求get參數、json格式參數、rpc protobuf等

  • 通信目標

數據送達至何處。
這也是接口概念的關鍵,在計算機網絡中能夠定位到網絡中確定主機和進程,如何將網絡請求交付處理呢?那么接口就是網絡請求對號入座的入口,常見框架中路由匹配規則也都大同小異。

路由注冊

路由注冊實現接口到控制器的映射,以此為基礎完成后續處理流程
同時還可以注冊中間件,構建請求處理過程的執行鏈路
路由注冊方式多種,原理上歸納為以下幾種:

基于配置(靜態)

  • 解析配置文件

// For example, PHP framework register controller with Array
class ActionControllerConfig extends ActionBaseConfig {
public static ControllerConfig => array (
array(
'action_id' => 'action_name' // action唯一標識,后續用作router map key
'pattern' => '/^\/rest\/2\.0\/module\/operation/?params'// 框架規則不盡相同,本例為正則表達式 + 請求參數組合匹配
'path' => 'controller class path'
'controller_class' => 'controller1.class.php'
),
...
)
}

  • 手動注冊路由

// 代碼來源 https://github.com/go-chi/chi
r.Route("/parent/pattern", func(r Router) {
r.Use(middleware2.SetContextUser) // 設置中間件
r.Mount("/xxx1", NewXxx1Router())
r.Mount("/xxx2", NewXxx2Router(boot))
r.Mount("/xxx3", NewXxx3Router(boot))
r.Mount("/xxx4", NewXxx4Router(boot))
r.Mount("/xxx5", NewXxx5Router(boot))
})

基于反射、注解、動態代理(動態)

  • 再次理解“反射”:
    golang / java 此類編譯型語言,編譯結束后具體實現均已存在,但是程序如何得知呢?利用反射能夠在運行時獲得具體Type&Value
  • 工作過程:
    新建路由實例
    coding階段配置handler到Router
    服務啟動時初始化注冊,反射獲取Router.Type&Router.Value(方式多樣,不限于此)
    整理得到“路由器”持有的“路由表”,路由表本質是url <—> 處理函數地址的映射表。
  • 常見框架路由注冊case:SpringMVC 注解Go Web 框架

路由匹配規則

精確匹配

模式匹配

參數輔助匹配


路由維護

最終路由注冊產出結果主要如下兩種形式(求見多識廣的小伙伴補充~)

路由表

路由樹

常用最左前綴匹配

總結

以上是生活随笔為你收集整理的服务框架之接口路由(路由接口 子接口)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。