System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于基礎能力/api網關,尤其是涉及一種基于lua的請求體協議轉換插件及其調用方法。
技術介紹
1、當api網關作為前后端調用的樞紐,其調用量和調用場景在實際運用過程中也在逐漸增加。api網關除了提供統一對外調用的數據結構和調用方式外,做到支持多協議的后端參數轉換也顯得十分關鍵。如何在最大限度減少請求方以api網關所規定的數據結構(json格式)調入,且可以在最大程度下支持依照后端服務協議做好數據結構轉換成所需要的xml格式的功能就顯得尤為重要。除此之外,還需要將后端返回的xml格式數據進行轉換,轉換成json返回給調用方。實現json與xml的相互轉換。
2、傳統的json與xml轉換插件需要從api網關調用第三方java服務,存在一定的延時。如遇服務更新或崩潰將無法進行轉換。那么一種基于lua語言,且支持熱更新的json與xml可以相互轉換的請求體協議轉換插件就顯得尤為重要。
3、該插件的誕生實現了一次更新網關插件,當后臺服務需要以xml進行接收和返回時,啟用插件。不需要時關閉插件即可實現該功能。使用過程中,無需修改配置文件、即更新即使用,不依賴第三方服務,調用即轉換,返回即轉換,極大程度上減少了調用時間損耗。
技術實現思路
1、有鑒于此,本專利技術旨在提出一種基于lua的請求體協議轉換插件及其調用方法,以解決上述現有技術中存在的至少一個問題。
2、為達到上述目的,本專利技術的技術方案是這樣實現的:
3、第一方面,本專利
4、進一步的,所述插件結構包括主入口文件模塊和配置文件模塊,所述主入口文件模塊和配置文件模塊均與數據庫通信連接,所述主入口文件模塊用于初始化所有必要的庫和定義主要的操作函數,所述配置文件模塊用于提供配置參數。
5、進一步的,所述數據庫包括json庫模塊和xml庫模塊,所述xml庫模塊json庫模塊用于json格式的解析和生成,所述xml庫模塊用于xml格式的解析和生成。
6、進一步的,所述功能轉換模塊包括json到xml轉換函數和xml到json轉換函數,其中,json到xml轉換函數包括:
7、輸入:json字符串;
8、處理:解析為lua表,然后轉換為xml格式;
9、輸出:xml字符串;
10、xml到json轉換函數包括:
11、輸入:xml字符串;
12、處理:解析為lua表,然后轉換為json格式;
13、輸出:json字符串。
14、進一步的,所述異常處理模塊用于捕獲json解析錯誤、xml解析錯誤。
15、進一步的,所述單元測試模塊用于編寫測試用例,確保各個轉換函數的正確性。
16、進一步的,所述性能優化模塊用于對大型數據集的處理進行優化。
17、第二方面,基于同一方面構思,本專利技術還提供了一種基于lua的請求體協議轉換插件的調用方法,包括以下步驟:
18、首先將插件搭配紫光云api網關或apisix網關使用,將其放置在配置plugins中;重啟網關后該插件生效;
19、選擇任意的api,啟用插件,對插件進行配置后,點擊保存,插件立即生效,無需重啟網關;
20、任意符合規范的調用請求,再該插件開啟時;都會將請求端的請求體從json格式轉換成xml格式,調用后端服務;
21、后端服務返回完整的xml報文,該插件獲取后進行轉換,成功轉換為json格式返回給調用端;
22、如后端服務修改,依然需要協議轉換則無需操作,如后端服務無需使用協議轉換功能,對插件做刪除操作,即可立即失效。
23、相對于現有技術,本專利技術所述的一種基于lua的請求體協議轉換插件及其調用方法具有以下優勢:
24、本專利技術所述的一種基于lua的請求體協議轉換插件及其調用方法,通過本專利技術,可以對api網關中任意的api接口啟用該協議轉換插件。插件啟用后,將會對請求的json格式報文進行協議轉換。通過轉換后的報文調用后端服務,當然同時對請求頭會進行改寫,符合xml調用的規范。后端返回xml數據后,該插件將自動轉換為json格式。該插件不依賴第三方java服務,減少了第三方服務調用造成的通訊延時等問題。同時該插件是否啟用只有api提供方知曉,前端調用接口無任何感知。
本文檔來自技高網...【技術保護點】
1.一種基于Lua的請求體協議轉換插件,其特征在于:包括插件結構、數據庫、功能轉換模塊、異常處理模塊、單元測試模塊和性能優化模塊,所述插件結構、功能轉換模塊均與數據庫通信連接,所述功能轉換模塊還分別與異常處理模塊、單元測試模塊和性能優化模塊通信連接。
2.根據權利要求1所述的一種基于Lua的請求體協議轉換插件,其特征在于:所述插件結構包括主入口文件模塊和配置文件模塊,所述主入口文件模塊和配置文件模塊均與數據庫通信連接,所述主入口文件模塊用于初始化所有必要的庫和定義主要的操作函數,所述配置文件模塊用于提供配置參數。
3.根據權利要求1所述的一種基于Lua的請求體協議轉換插件,其特征在于:所述數據庫包括JSON庫模塊和XML庫模塊,所述XML庫模塊JSON庫模塊用于JSON格式的解析和生成,所述XML庫模塊用于XML格式的解析和生成。
4.根據權利要求1所述的一種基于Lua的請求體協議轉換插件,其特征在于:所述功能轉換模塊包括JSON到XML轉換函數和XML到JSON轉換函數,其中,JSON到XML轉換函數包括:
5.根據權利要求1所述
6.根據權利要求1所述的一種基于Lua的請求體協議轉換插件,其特征在于:所述單元測試模塊用于編寫測試用例,確保各個轉換函數的正確性。
7.根據權利要求1所述的一種基于Lua的請求體協議轉換插件,其特征在于:所述性能優化模塊用于對大型數據集的處理進行優化。
8.一種基于Lua的請求體協議轉換插件的調用方法,應用于權利要求1-7任一所述的一種基于Lua的請求體協議轉換插件,其特征在于:包括以下步驟:
...【技術特征摘要】
1.一種基于lua的請求體協議轉換插件,其特征在于:包括插件結構、數據庫、功能轉換模塊、異常處理模塊、單元測試模塊和性能優化模塊,所述插件結構、功能轉換模塊均與數據庫通信連接,所述功能轉換模塊還分別與異常處理模塊、單元測試模塊和性能優化模塊通信連接。
2.根據權利要求1所述的一種基于lua的請求體協議轉換插件,其特征在于:所述插件結構包括主入口文件模塊和配置文件模塊,所述主入口文件模塊和配置文件模塊均與數據庫通信連接,所述主入口文件模塊用于初始化所有必要的庫和定義主要的操作函數,所述配置文件模塊用于提供配置參數。
3.根據權利要求1所述的一種基于lua的請求體協議轉換插件,其特征在于:所述數據庫包括json庫模塊和xml庫模塊,所述xml庫模塊json庫模塊用于json格式的解析和生成,所述xml庫模塊用于xml格式的解析和生成。
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。