淺談T100 WebService Server與Client端客制開發
阿新 • • 發佈:2018-12-19
T100 WebService Server端開發:
開發流程:1.服務註冊;2.服務程式簽出;3.服務程式撰寫;4.服務程式上傳
1.azzi700註冊服務規格編號,然後簽出就可以寫程式了:
2.宣告JSON組成Requent和Response的內容:
#add-point:自定義客戶專用模組變數(Module Variable) PRIVATE TYPE type_detail RECORD #傳入單身陣列 isagseq LIKE isag_t.isagseq, #項次 isag001 LIKE isag_t.isag001, #來源型別 isag002 LIKE isag_t.isag002, #來源單號 isag003 LIKE isag_t.isag003, #來源項次 isag009 LIKE isag_t.isag009, #料號 isag004 LIKE isag_t.isag004, #發票數量 isag005 LIKE isag_t.isag005, #發票單位 isag101 LIKE isag_t.isag101, #原幣單價 isag105 LIKE isag_t.isag105 #原幣稅後金額 END RECORD PRIVATE TYPE type_master RECORD #傳入單頭陣列 isaf003 LIKE isaf_t.isaf003, #賬款客戶 isafdocdt LIKE isaf_t.isafdocdt, #單據日期 isaf018 LIKE isaf_t.isaf018, #稅率 isafud001 LIKE isaf_t.isafud001, #EDB對賬單號 items DYNAMIC ARRAY OF type_detail END RECORD PRIVATE TYPE type_return RECORD #返回陣列 code LIKE type_t.chr20, sqlcode LIKE type_t.chr20, description LIKE type_t.chr1000, orderNo LIKE type_t.chr50 #EDB銷退單單號 END RECORD
3.從json中讀取request資料:
#取回 datakey 資料內容 LET g_ent = cl_aws_json_getValue("datakey","EntId") LET g_company = cl_aws_json_getValue("datakey","CompanyId") LET l_json_obj = cl_aws_json_getParam() #將data 轉入l_master record CALL l_json_obj.toFGL(l_master) IF l_json_obj IS NULL THEN LET g_status.code = "wss-00216" #讀入json 發生問題 RETURN END IF #檢查傳入datakey是否為空 IF cl_null(g_ent) THEN LET g_status.code = "wss-00138" LET l_str = cl_replace_err_msg(cl_getmsg('wss-00138',g_dlang),'EntId') LET g_status.description = l_str RETURN END IF IF cl_null(g_company) THEN LET g_status.code = "wss-00138" LET l_str = cl_replace_err_msg(cl_getmsg('wss-00138',g_dlang),'CompanyId') LET g_status.description = l_str RETURN END IF
4.返回response的json:
#返回值
CALL cl_aws_json_addParam(util.JSONObject.fromFGL(l_return))
在Server端的開發過程中,有幾個常用的方法:
- cl_aws_json_getValue() 取得欄位值
- cl_aws_json_getParam() 取得整個param段
- l_json_obj.toFGL() 將param段的資料轉換讀取到預定義變數
- cl_aws_json_addParam(util.JSONObject.fromFGL(l_return)) 將返回變數自動加入response的json中
T100 WebService Client端開發:
宣告JSON組成Request所必須的內容,參考下列的type_service 的RECORD,先將這些必要宣告出來以利後面呼叫:
type type_service RECODE
prod STRING,
name STRING,
ip STRING
END RECODE
舉例說明: 程式開始先宣告會呼叫到模組變數,如type_service,接著對這些變數進行初始化,像是預設的引數內容以及預設的服務產品、服務名稱、ip:
宣告完變數後:
- 初始化JSON內容,參考cl_rest_json_init();
- 呼叫addParam()以及addDatakey() function進行增加parameter、datakey的動作;
- 透過cl_rest_json_invokeSrv()將request傳送出去並且取得執行狀態碼、回傳內容以及錯誤資訊,當狀態碼為0是代表執行成功;
- 使用cl_rest_json_getParam()取得parameter的內容並將其內容透過toFGL()這個function 來轉成RECORD形式以利我們取得所需的資訊,反之可從l_errmsg取得錯誤訊息。
T100 WebService Client 端開發(中臺)
宣告應用服務要傳給對方產品的主體資料,與接收回傳的主體資料RECORD: