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,但是访问不了,可能会出现如下提示:

 

转载于:https://www.cnblogs.com/angusyang/p/6667600.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值