Talend Restful


目的:用Talend實現用Restful形式發布webservice

實現:該示例實現了三個功能:通過查詢獲取數據;通過調用存儲過程獲取數據;新增數據。

總體圖:

各個組件的主要配置如下:

tRESTRequest_1是Job的主入口,我們這里實現了三個方法,使用不同形式傳輸。

另外注意的是,因為我們是打算部署到karaf container中,所以REST的Endpoint相同的不能部署在一起,會有沖突,所以我們一般建議在port后面追加模塊或系統的標示一起做endpoint,這樣就不用耗費很多port來部署了!

下面分三個方法來列出Sample,

getUser:使用GET的傳輸方法,只傳輸一個id,URI Pattern:"/{id}/",調用示例就是http://localhost:8088/user/1/

獲取參數並映射

使用tMSSqlRow組件來實現傳參查詢 

通過tParseRecordSet組件將結果集轉換為Set集合 

如果有記錄,將記錄打包成要輸出的XML

然后通過組件返回結果!

另外,如果查詢沒有結果的話,加入判斷,並包裝返回的xml返回!

注意:在這個Job中,因為我有兩個判斷,雖然是從不同節點if的,但可能是由於組流程在一個main job中,所以如果只用(Integer)globalMap.get("tParseRecordSet_2_NB_LINE") == 0一個條件判斷的話,在運行是,另外一個if也會執行,所以在此加上了URI的一些判斷!

這樣getUser基本完成!

其他兩個操作基本類似,在此就不累述!不過在此對調用存儲過程的稍加截圖說明一下!

使用tMSSqlSp組件,Parameters,一個是輸入參數,一個是輸出記錄集RECORD SET 

在tParseRecordSet時選擇輸出記錄集RECORD SET的users,並添加需要輸出的欄位!

 

注意事項:

以前沒留意,近期發現一個問題,就是tRESTRequest的REST Endpoint好像不能使用變量,例如不能使用context.endpointurl,而只能直接輸入字符串"http://localhost:8088/user"之類的,具體為什么會這樣,沒具體查找原因!

但是如果用了類似變量context.endpointurl的話,在designer里面測試是沒問題的,但是部署到container中后就有問題,雖然狀態顯示是Active,但是訪問不了,可能會出現如下提示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM