一種soapapi轉換為restapi的公共消息頭承載方法及裝置的製作方法
2023-05-21 03:48:21
專利名稱:一種soap api轉換為rest api的公共消息頭承載方法及裝置的製作方法
技術領域:
本發明涉及通信技術領域,尤其涉及一種SOAP API轉換為REST API的公共消息 頭承載方法及裝置。
背景技術:
簡單對象訪問協議應用程式編程接口(SOAP API,Simple Object Access Protocol Application Programming Interface)為基於 Web Service 機白勺應用軟體系 統間實現互連互通的接口,SOAP API使基於不同作業系統、不同語言開發出的應用軟體方 便實現互通。整個SOAP API消息包括消息頭(header承載)和消息體(body承載)。消息 頭用於承載公共信息,用於鑑權認證等公共處理;消息體用於承載業務相關信息,用於業務 相關處理。表行化的狀態轉移應用程式編程接口(REST API, Representational State Transfer Application Programming Interface)為基於網際網路的WEB應用能力之間常用 的互操作接口,即遵循REST風格的API,遵循REST風格的API對應的系統為REST風格的系 統,REST風格的系統特點包括對外開放的信息都為資源,資源通過傳統TOB技術的通用資 源標識符(URI,Uniform Resource Identifier)來標識;及該對外開放的資源操作只有4 個,包括增加、修改、刪除、獲取,分別對應傳統WEB技術超文本傳輸協議(HTTP,Hyper Text Transfer Protocol)協議中 Post (增加),Put (修改)、Delete (刪除),Get (獲取)。隨著網際網路的快速發展,預示著所有能力都可以向網際網路開放,例如傳統的使用 Web service的應用系統開始向網際網路開放,因此,需要將SOAP API開放為對應的REST API (即SOAP API轉換為REST API),SOAP API開放為對應的REST API時,對業務部分內 容都會抽象為一個個資源,SOAP公共消息頭部分需要在新的REST API接口尋找一個公共 的承載點。由於WEB技術應用HTTP協議,WEB應用的HTTP協議的HTTP消息頭,主要承載 HTTP協議客戶端和伺服器協商相關欄位;HTTP消息體,主要承載業務消息。因此,在SOAP API轉換為REST API時,需要在HTTP中尋找合適位置攜帶SOAP消息頭相關內容。現有技術一提供的SOAP API轉換為REST API的技術方案為擴展HTTP消息頭字 段,以X開頭增加SOAP消息頭要攜帶的內容,如下POST http://www. example, com/sms/1. 0/smsmessaging/outbound/100860001/ requests HTTP/1. 1Authorization:Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ ==Accept: application/xmlContent-Type:application/xml ;charset = UTF-8Host:example· com:80X-Partner-Id:3500001X-Service-Id:35000010001
此擴展導致HTTP協議欄位中頭域名非常多,並且很混亂。且HTTP協議欄位的擴 展一般和HTTP協議客戶端和伺服器底層協商機制相關,此擴展導致客戶端與伺服器底層 協商處理速度變慢。現有技術二提供的SOAP API轉換為REST API的技術方案為將SOAP消息頭在 HTTP消息體中攜帶。然而,由於HTTP消息體主要承載業務消息,在每個業務消息的XML文件中包含消 息頭內容,導致業務消息和消息頭強關聯,在文檔和程序的處理上獨立性不強。另外,在程 序處理時,必須解析整個業務消息體才能完成消息頭要求的認證,造成處理速度緩慢。因此,現有的SOAP API轉換為REST API的技術,存在冗餘以及造成消息處理速度 緩慢的問題。
發明內容
本發明實施例提供一種SOAP API轉換為REST API的公共消息頭承載方法及裝置。本發明實施例是通過以下技術方案實現的本發明實施例提供一種簡單對象訪問協議應用程式編程接口 SOAP API轉換為表 行化的狀態轉移應用程式編程接口 REST API的公共消息頭承載方法,包括確定REST API公共消息承載欄位;所述公共消息承載欄位為位於RESTAPI消息 頭,且符合如下形式的欄位一個頭域名+ —個頭域值+多個屬性值對;將SOAP消息頭的相關內容以所述屬性值對的形式承載於所述公共消息承載欄位 中。本發明實施例提供一種簡單對象訪問協議應用程式編程接口 SOAP API轉換為表 行化的狀態轉移應用程式編程接口 REST API的裝置,包括確定單元,用於確定REST API公共消息承載欄位;所述公共消息承載欄位為符合 如下形式的欄位一個頭域名+ —個頭域值+多個屬性值對;轉換單元,用於將SOAP消息頭的相關內容以所述屬性值對的形式承載於所述公 共消息承載欄位中。由上述本發明實施例提供的技術方案可以看出,本發明實施例由於將SOAP消息 頭的相關內容承載於REST API公共消息承載欄位中,由於所述公共消息承載欄位位於REST API消息頭,因此避免了業務消息和消息頭強關聯,以及在程序處理時,必須解析整個業務 消息體才能完成消息頭要求的認證,造成的處理速度緩慢等問題;另外,由於所述公共消息 承載欄位為符合如下形式的欄位一個頭域名+—個頭域值+多個屬性值對,因此可以有效 避免頭域名過多導致的客戶端與伺服器底層協商緩慢的問題。因此,本發明實施例提供的SOAP API轉換為REST API的公共消息頭承載方案,保 證了系統的簡潔性和比較好的協議解析性能。
圖1為本發明實施例一種SOAP API轉換為REST API的公共消息頭承載方法流程 圖2為本發明實施例一種SOAP API轉換為REST API的裝置結構示意圖; 圖3為本發明實施例一種SOAP API轉換為REST API的裝置中確定單元結構示意 圖4為本發明實施例另一種SOAP API轉換為REST API的裝置中確定單元結構示
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完 整地描述,可以理解的是,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施 例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的 所有其他實施例,都屬於本發明保護的範圍。本發明一個實施例提供一種SOAP API轉換為REST API的公共消息頭承載方法, 如圖1所示,包括如下步驟步驟10 確定REST API公共消息承載欄位;所述公共消息承載欄位為位於REST API消息頭,且符合如下形式的欄位一個頭域名+ —個頭域值+多個屬性值對;所述公共消息承載欄位可以為所述HTTP協議中的已有的欄位,例如認證 (Authorization)欄位,或者,也可以為REST API中新創建的欄位。不論是已有的欄位還 是新創建的欄位,都符合一個頭域名+ —個頭域值+多個屬性值對的形式,這樣可以有效避 免頭域名過多導致的客戶端與伺服器底層協商緩慢的問題。其中,所述屬性值對包括屬性名+屬性值。本發明實施例對屬性值對的個數不做限制,可以為兩個,或更多。步驟11 將SOAP消息頭的相關內容以所述屬性值對的形式承載於所述公共消息 承載欄位中。其中,需要承載於所述公共消息承載欄位中的所述SOAP消息頭的內容隨互通的 應用系統的不同而不同,本發明實施例對此不做限制。本發明實施例提供了一種簡潔方便的SOAP API轉換為REST API的公共消息頭承 載方案,由於將SOAP消息頭的相關內容承載於REST API公共消息承載欄位中,所述公共消 息承載欄位位於REST API消息頭,因此避免了業務消息和消息頭強關聯,以及在程序處理 時,必須解析整個業務消息體才能完成消息頭要求的認證,造成的處理速度緩慢等問題;另 外,由於所述公共消息承載欄位為符合如下形式的欄位一個頭域名+—個頭域值+多個屬 性值對,因此可以有效避免頭域名過多導致的客戶端與伺服器底層協商緩慢的問題。因此,本發明實施例提供的SOAP API轉換為REST API的方法,保證了系統的簡潔 性和比較好的協議解析性能。本發明實施例提供的一種SOAP API轉換為REST API的實例如下以擴展HTTP協議消息頭的「Authorization」欄位為例,通過研究Authorization 欄位發現,Authorization在HTTP協議中允許擴展為不同的認證模式,面向不同認證模式 時,攜帶的消息屬性值對可以任意擴展,在SOAP API轉換為REST API實例中,擴展後的協 議如下,其中帶下劃線的部分為擴展後的內容,被擴展欄位為「Authorization」欄位,位於 承載協商相關欄位的HTTP協議消息頭,擴展後的「Authorization」欄位包含一個頭域名
CN 102143200 A
說明書3/7頁
0029]
圖;
意圖。
5Authorization,一個頭域值EXAMPLEAUTH realm = 」 EXAMPLE,和多個由屬性名+屬性值組 成的屬性值對,如devld =」 3500001」,authType =」01」,authValue = 」 QffxhZGRpb jpvcGVuIHNlc2FtZQ ==,,,timeStamp =」0415011502」,appld = 」 350000100020003」,SAN =」 100860001」,OA =」 13912345678」,FA =」 13912345678」,multicastMessaging = 「 false"
本實施例擴展後的HTTP協議如下POST http://www. example, com/sms/1. 0/smsmessaging/outbound/100860001/ requests HTTP/1. 1Accept: application/xmlContent-Type:application/xml ;charset = UTF-8Host:example, com:80Authorization:EXAMPLEAUTH realm =」EXAMPLE」,devld =」 3500001」,authType =,,01,,,authValue = 」 QWxhZGRpb ipvcGVuIHNlc2FtZQ == 』,,timeStamp =」 0415011502」,appld = 」 350000100020003」,SAN =」 100860001」,OA =」 13912345678」,FA =」 13912345678」,multicastMessaging =,,false,,,tel:+1350000001tel:+1350000999tel:+1351111999
senderNamehttp : / / appl ication. example, com/notifications/ DeliveryInfoNotificationText Message
67893為進一步理解本發明,下面以具體應用場景為例進行說明。本發明實施例提供的SOAP API轉換為REST API的方法一種應用場景為電信能 力向網際網路應用開放,如電信運營商開放簡訊能力給網際網路應用使用。開放的REST API公共消息頭攜帶網際網路應用提供者和應用標識等信息到電信能 力開放網關,電信能力開放網關需要對應用提供者和應用標識做鑑權認證。本實例中將 SOAP消息頭的相關內容存放到HTTP的「Authorization」欄位,電信能力開放網關獲取HTTP 底層Authorization信息就可以完成鑑權認證,不需要解析業務消息,提高處理速度,具體 REST API 消息如下,Authorization 為頭域名,EXAMPLEAUTH realm = "EXAMPLE」為頭域值, 下劃線部分為擴展的欄位,包含SOAP消息頭的相關內容,以多個屬性值對的形式被加入到 Authorization 欄位中POST http://www. example, com/sms/1. 0/smsmessaging/outbound/100860001/ requests HTTP/1. 1Accept: application/xmlContent-Type:application/xml ;charset = UTF-8Host:example, com:80Authorization:EXAMPLEAUTH realm =」EXAMPLE,,,devld =」 3500001」,authType =,,01,,,authValue = 」 QWxhZGRpb ipvcGVuIHNlc2FtZQ == 』,,timeStamp =」 0415011502」,appld = 」 350000100020003」,SAN =」 100860001」,OA =」 13912345678」,FA =」 13912345678」,multicastMessaRinR =,,false,,,tel:+1350000001tel:+1350000999tel:+1351111999senderNamehttp : / / appl ication. example, com/notifications/ DeliveryInfoNotification
Text Message67893本發明實施例提供的SOAP API轉換為REST API的方法另一種應用場景為電信 能力向終端應用開放,如電信位置能力向終端應用開放。終端應用獲取自己或者他人位置時,需要攜帶公共的消息頭到能力開放網關 做認證使用,可以在REST API的Authorization欄位中攜帶。下發消息示例如下, Authorization為頭域名,EXAMPLEAUTH realm = "EXAMPLE」為頭域值,下劃線部分為擴展的 欄位,包含所述公共的消息頭的相關內容,以多個屬性值對的形式被加入到Authorization 欄位中GET http//www. example, com/1. 0/1erminallocation/13912345678/1ocation HTTP/1. 1Accept: application/xmlContent-Type:application/xml ;charset = UTF-8Host:example, com:80Authorization:EXAMPLEAUTH realm =」EXAMPLE,,,username =,,13912345678,,,authType =,,01,,,authValue = 」 QWxhZGRpb ipvcGVuIHNlc2FtZQ == 』,,timeStamp =」 0415011502」tel:+1350000001</terminalLocation:terminalLocationRequest)本發明實施例提供一種SOAP API轉換為REST API的裝置,如圖2所示,包括確定單元20,用於確定REST API公共消息承載欄位;所述公共消息承載欄位為位
於所述REST API消息頭,且符合如下形式的欄位一個頭域名+ —個頭域值+多個屬性值 對;所述屬性值對包括屬性名+屬性值。轉換單元21,用於將SOAP消息頭的相關內容以所述屬性值對的形式承載於所述 公共消息承載欄位中。如圖3中所示,所述確定單元20 —種實施例進一步包括選擇子單元201,用於在REST API消息頭的已有欄位中選擇所述公共消息承載字 段,所選擇的欄位包括認證欄位。如圖4中所示,所述確定單元20另一種實施例進一步包括創建子單元202,用於在REST API消息頭中創建所述公共消息承載欄位。本發明實施例所述SOAP API轉換為REST API的裝置,由於將SOAP消息頭的相關內容承載於REST API公共消息承載欄位中,所述公共消息承載欄位位於REST API消息 頭,因此避免了業務消息和消息頭強關聯,以及在程序處理時,必須解析整個業務消息體才 能完成消息頭要求的認證,造成的處理速度緩慢等問題;另外,由於所述公共消息承載欄位 為符合如下形式的欄位一個頭域名+—個頭域值+多個屬性值對,因此可以有效避免頭域 名過多導致的客戶端與伺服器底層協商緩慢的問題。因此,本發明實施例提供的SOAP API轉換為REST API的裝置,保證了系統的簡潔 性和比較好的協議解析性能。綜上所述,本發明實施例由於將SOAP消息頭的相關內容承載於RESTAPI公共消息 承載欄位中,所述公共消息承載欄位位於REST API消息頭,因此避免了業務消息和消息頭 強關聯,以及在程序處理時,必須解析整個業務消息體才能完成消息頭要求的認證,造成的 處理速度緩慢等問題;另外,由於所述公共消息承載欄位為符合如下形式的欄位一個頭 域名+ —個頭域值+多個屬性值對,因此可以有效避免頭域名過多導致的客戶端與伺服器 底層協商緩慢的問題。因此,本發明實施例提供的SOAP API轉換為REST API的公共消息頭承載方案,保 證了系統的簡潔性和比較好的協議解析性能。本領域普通技術人員可以理解,實現上述實施例方法中的全部或部分步驟是可以 通過程序來指令相關的硬體完成,所述的程序可以存儲於一計算機可讀存儲介質中,例如 只讀存儲器(簡稱ROM)、隨機存取存儲器(簡稱RAM)、磁碟、光碟等。以上所述,僅為本發明較佳的具體實施方式
,但本發明的保護範圍並不局限於此, 任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到的變化或替換, 都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應該以權利要求的保護範圍 為準。
權利要求
1.一種簡單對象訪問協議應用程式編程接口 SOAP API轉換為表行化的狀態轉移應用 程序編程接口 REST API的公共消息頭承載方法,其特徵在於,包括確定REST API公共消息承載欄位;所述公共消息承載欄位為位於RESTAPI消息頭,且 符合如下形式的欄位一個頭域名+ —個頭域值+多個屬性值對;將SOAP消息頭的相關內容以所述屬性值對的形式承載於所述公共消息承載欄位中。
2.如權利要求1所述的方法,其特徵在於,所述公共消息承載欄位為認證欄位。
3.如權利要求1所述的方法,其特徵在於,所述公共消息承載欄位為新創建的欄位。
4.如權利要求1所述的方法,其特徵在於,所述屬性值對包括屬性名+屬性值。
5.一種簡單對象訪問協議應用程式編程接口 SOAP API轉換為表行化的狀態轉移應用 程序編程接口 REST API的裝置,其特徵在於,包括確定單元,用於確定REST API公共消息承載欄位;所述公共消息承載欄位為符合如下 形式的欄位一個頭域名+ —個頭域值+多個屬性值對;轉換單元,用於將SOAP消息頭的相關內容以所述屬性值對的形式承載於所述公共消 息承載欄位中。
6.如權利要求5所述的裝置,其特徵在於,所述確定單元進一步包括選擇子單元,用於在REST API協議消息頭的已有欄位中選擇所述公共消息承載欄位, 所選擇的欄位包括認證欄位。
7.如權利要求5所述的裝置,其特徵在於,所述確定單元進一步包括創建子單元,用於在REST API協議消息頭中創建所述公共消息承載欄位。
8.如權利要求5、6或7所述的裝置,其特徵在於,所述屬性值對包括屬性名+屬性值。
全文摘要
一種通信技術領域中SOAP API轉換為REST API時公共消息頭承載方法,包括確定RESTAPI公共消息承載欄位;所述公共消息承載欄位為位於REST API消息頭,且符合如下形式的欄位一個頭域名+一個頭域值+多個屬性值對;將SOAP消息頭的相關內容以所述屬性值對的形式承載於所述公共消息承載欄位中。本發明實施例還提供一種SOAP API轉換為REST API的裝置。本發明實施例避免了現有的轉換方案中,業務消息和消息頭強關聯,以及在程序處理時,必須解析整個業務消息體才能完成消息頭要求的認證,造成的處理速度緩慢等問題;同時,還有效避免頭域名過多導致的客戶端與伺服器底層協商緩慢的問題。
文檔編號H04L29/08GK102143200SQ20101051629
公開日2011年8月3日 申請日期2010年10月20日 優先權日2010年10月20日
發明者呂軍濤 申請人:華為技術有限公司