一種基于json數據協(xié)議的業(yè)務通訊方法
【技術領域】
[0001]本發(fā)明涉及網絡通訊技術領域,尤其涉及一種基于JSON數據協(xié)議的業(yè)務通訊方法和系統(tǒng)。
【背景技術】
[0002]傳統(tǒng)的Web Service的技術與EJB是采用對象序列化的模式進行業(yè)務數據的傳輸,無法透明的表達業(yè)務的信息。JSON(Javascript Object Notat1n)是一種輕量級的數據交換語言,以文字為基礎,且易于讓人閱讀,JSON格式的數據封裝與定義,可以適應客戶端與服務器的業(yè)務的數據的透明請求,便于用戶不用深入了解服務端的邏輯代碼就可以知道服務器端響應的數據的信息。
[0003]目前,很多業(yè)務系統(tǒng)采用AJAX技術,但是沒有獨立的基于AJAX技術之上進行業(yè)務數據操作的協(xié)議進行標準化的規(guī)劃,致使不同的業(yè)務系統(tǒng)的訪問方式混亂,不獨立重寫協(xié)議,無法做到互通互聯。
【發(fā)明內容】
[0004]本發(fā)明的目的在于提出一種基于JSON數據協(xié)議的業(yè)務通訊方法和系統(tǒng),通過給定一種基于JSON數據協(xié)議的數據請求通訊格式和數據響應格式,使得在不同的操作環(huán)境使用該給定的數據通訊格式的情況下可以實現業(yè)務上的互相通訊,并且只要知道業(yè)務實體,就能清晰知道通訊的方式與標準以及通訊的內容。
[0005]為達此目的,本發(fā)明采用以下技術方案:
[0006]一方面,本發(fā)明實施例提供一種基于JSON數據協(xié)議的業(yè)務通訊方法,包括:
[0007]客戶端根據JSON數據協(xié)議對數據請求包按照預設的數據請求通訊格式進行封裝,得到封裝請求數據包,所述數據請求包的內容包括操作碼,決策參數和業(yè)務數據;
[0008]服務器接收并解析所述封裝請求數據包,還原所述封裝請求數據包的內容,根據所述操作碼和決策參數進行業(yè)務的規(guī)則計算與業(yè)務數據的處理,得到數據處理的結果;
[0009]服務器將所述數據處理的結果和所述數據處理的反饋信息,根據預設的數據響應格式進行基于所述JSON數據協(xié)議的封裝,得到封裝響應數據包,將所述封裝響應數據包返回給客戶端。
[0010]其中,所述服務器接收并解析所述封裝數據包之前還包括:客戶端通過AJAX請求將所述封裝請求數據包發(fā)送給服務器。
[0011]其中,所述預設的數據請求通訊格式具體為:
[0012]http: //URL ? opt type = do something&.TsonData = jparam:1i, data:「11 ;
[0013]其中,操作碼opt_type定義操作類型,其中所述操作類型包括:添加do_insert,修改
[0014]do_update,查詢 do_search 和刪除 do_delete ;
[0015]決策參數JsonData為一個業(yè)務協(xié)議包,表明將業(yè)務數據類型設置為JSON格式;
[0016]附加參數param用來設置附加的參數信息,并傳遞給服務器;
[0017]業(yè)務數據data,用來定義所述業(yè)務數據的數據格式和內容;
[0018]其中,所述業(yè)務數據data的所述業(yè)務數據的數據格式和內容具體為:
[0019]data: [ {productat ID: ‘,,productName: ‘,,productPrice: ‘,,productQuanitity: " }];
[0020]其中,productld為產品編號,productName為產品名稱,productPrice為產品價格,productQuantity為產品數量。
[0021]其中,所述預設的數據響應格式具體為:
[0022]{success:true/false, except1n: ‘’,data:[{}]};
[0023]其中,參數success表達請求是否成功;
[0024]參數true表達請求成功,參數false表達請求失?。?br>[0025]反饋信息except1n為請求發(fā)生異常時將錯誤信息反饋給請求方;
[0026]參數data表征所述數據處理的結果。
[0027]另一方面,本發(fā)明實施例提供一種基于JSON數據協(xié)議的業(yè)務通訊系統(tǒng),包括:
[0028]請求數據包封裝單元,用于客戶端根據JSON數據協(xié)議對數據請求包按照預設的數據請求通訊格式進行封裝,得到封裝請求數據包,所述數據請求包的內容包括操作碼,決策參數和業(yè)務數據;
[0029]數據響應單元,用于服務器接收并解析所述封裝請求數據包,還原所述封裝請求數據包的內容,根據所述操作碼和決策參數進行業(yè)務的規(guī)則計算與業(yè)務數據的處理,得到數據處理的結果;
[0030]響應數據包封裝單元,用于服務器將所述數據處理的結果和所述數據處理的反饋信息,根據預設的數據響應格式進行基于所述JSON數據協(xié)議的封裝,得到封裝響應數據包,將所述封裝響應數據包返回給客戶端;
[0031]返回單元,用于將所述封裝響應數據包返回給客戶端。
[0032]其中,該系統(tǒng)還包括:
[0033]發(fā)送單元,用于客戶端通過AJAX請求將所述封裝請求數據包發(fā)送給服務器。
[0034]其中,該系統(tǒng)還包括:
[0035]請求格式定義單元:用于定義所述預設的數據請求通訊格式。
[0036]其中,該系統(tǒng)還包括:
[0037]響應格式定義單元:用于定義所述預設的數據響應格式。
[0038]本發(fā)明提供的技術方案的有益效果為:
[0039]客戶端根據JSON數據協(xié)議對數據請求包按照預設的數據請求通訊格式進行封裝,得到封裝請求數據包,服務器接收并解析所述封裝請求數據包,還原所述封裝請求數據包的內容,得到數據處理的結果,并將數據處理的結果和數據處理的反饋信息根據預設的數據響應格式,進行基于JSON數據協(xié)議的封裝,得到封裝響應數據包,將所述封裝響應數據包返回給客戶端;客戶端和服務器進行數據交互時,均采用JSON數據協(xié)議定義的數據格式對請求和響應的數據包進行封裝,使得在不同的操作環(huán)境使用該給定的數據通訊格式的情況下可以實現業(yè)務上的互相通訊,并且只要知道業(yè)務實體,就能清晰知道通訊的方式與標準以及通訊的內容。
【附圖說明】
[0040]圖1是本發(fā)明業(yè)務通訊方法的第一個實施例的方法流程圖。
[0041]圖2是本發(fā)明業(yè)務通訊方法的第二個實施例的方法流程圖。
[0042]圖3是本發(fā)明業(yè)務通訊系統(tǒng)的第一個實施例的系統(tǒng)結構圖。
[0043]圖4是本發(fā)明業(yè)務通訊系統(tǒng)的第二個實施例的系統(tǒng)結構圖。
【具體實施方式】
[0044]下面結合附圖并通過【具體實施方式】來進一步說明本發(fā)明的技術方案。
[0045]實施例一
[0046]參照圖1,圖1是本發(fā)明業(yè)務通訊方法的第一個實施例的方法流程圖。
[0047]在第一實施例中,該業(yè)務通訊方法包括:
[0048]S101,客戶端根據JSON數據協(xié)議對數據請求包按照預設的數據請求通訊格式進行封裝,得到封裝請求數據包,所述數據請求包的內容包括操作碼,決策參數和業(yè)務數據;
[0049]JSON(Javascript Object Notat1n)是一種輕量級的數據交換語言,以文字為基礎,且易于讓人閱讀,JSON格式的數據封裝與定義,可以適應客戶端與服務器業(yè)務通訊的數據的透明請求,便于用戶不用深入了解服務端的邏輯代碼就可以知道服務器端響應的數據的信息;
[0050]客戶端可以是手機,電腦等,手機和電腦采用的是不同的操作系統(tǒng),手機的操作系統(tǒng)有10S,安卓等,電腦的操作系統(tǒng)有Windows,Linux等,不同的操作系統(tǒng)遵循不同的通訊協(xié)議,發(fā)送和接收數據的格式是不一樣的,傳統(tǒng)的Web Service的技術與EJB是采用對象序列化的模式進行業(yè)務數據的傳輸,無法透明的表達業(yè)務的信息;
[0051]客戶端向服務器發(fā)送數據請求,根據JSON數據協(xié)議,按照定義的數據請求通訊格式對數據請求包進行封裝,該數據請求通訊格式為:
[0052]http: //URL ? opt type = do something&.TsonData = jparam:1i, data:「11 ;
[0053]其中,操作碼opt_type定義操作類型,所述操作類型包括:添加do_insert,修改(do_update),查詢(do_search)和刪除(do_delete);
[0054]決策參數JsonData為一個業(yè)務協(xié)議包,表明將業(yè)務數據類型設置為JSON格式;
[0055]附加參數param用來設置附加的參數信息,并傳遞給服務器;
[0056]業(yè)務數據data,用來定義所述業(yè)務數據的數據格式和內容;
[0057]其中,所述業(yè)務數據data的所述業(yè)務數據的數據格式和內容具體為:
[0058]data: [ {productat ID: ",productName: ",productPrice:",productQuanitity: " }];
[0059]其中,productld為產品編號,productName為產品名稱,productPrice為產品價格,productQuantity為產品數量。
[0060]例如,若需要添加廣品?目息,該廣品?目息為:
[0061]產品編號:005 ;
[0062]產品名稱:花生;
[0063]產品價格:100;
[0064]產品重量:50 ;
[0065]則請求添加該產品信息的數據請求通訊格式為:
[0066]http://URL ? opt_type = do_insert&JsonData = {param:{},
[0067]data: [ {productatID: ‘005,,productName: ‘花生,,productPrice: ‘100,,productQuanitity: <50> } ]};
[0068]S102,服務器接收并解析所述封裝請求數據包,還原所述封裝請求數據包的內容,根據所述操作碼和決策參數進行業(yè)務的規(guī)則計算與業(yè)務數據的處理,得到數據處理的結果;
[0069]服務器接收到客戶端發(fā)送的按照預設的數據請求通訊格式封裝的數據請求包,將該封裝數據包還原,獲取數據請求包的內容,該內容包括操作碼,決策參數和業(yè)務數據,然后根據操作碼和決策參數進行業(yè)務的規(guī)則計算與業(yè)務數據的處理;
[0070]例如,若需要添加上述產品的信息,服務器還原上述數據請求包,并解析上述數據請求的內容,具體解析過程為:
[0071]解析操作類型opt_type = do_insert,表示要添加產品信息;
[0072]解析結構化之后的產品信息,data:[ {productatID: ‘005’,productName: ‘花生’,productPrice: ‘ 100’,productQuanitity: ‘