作者JohnnyDell (强尼戴尔)
看板java
标题[问题] 请问关於RESTFul的使用
时间Mon Jul 21 16:33:36 2014
目前有一个实作了restful interface的web service A
而我必须在我的程式(也是一个web service 简称B)去
http post, get, delete, patch, put, update A
该web service A是以json格式传输资料
Google过大多是用httpurlConnection或apache的clienthttp
然後再以org.json进行处理 请问这是一般大家都这麽做的吗?
另有看到 Jersey 虽主要是一个实作Restful web service的framework
但好像也可以拿来用作restful http client??
貌似还有看到可以自动的做POJO与json的mapping?
如果可以的话那好像蛮适合用在web service B的?
不过目前还在研究要怎麽使用..
不知道各位大大有没有其他建议
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.116.194.46
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1405931618.A.A3D.html
※ 编辑: JohnnyDell (122.116.194.46), 07/21/2014 16:34:29
1F:推 Killercat:没做过restful的话 真心建议从servlet做起吧 07/21 17:07
2F:→ Killercat:Jersey根Restlet都满好用的就是 07/21 17:08
3F:→ Killercat:但是servlet不是IOC 会强迫你搞懂一些东西 07/21 17:08
K大 目前那个RESTful web service是已经完成的
我现在要做的只是在我的web service透过http去get data, post data这样~
4F:→ qrtt1:学习的情况由 servlet 做起,要写产品就用些可靠的 07/21 17:45
5F:→ qrtt1:framework 或 library 呗 :P 07/21 17:45
Q大 目前是在找有哪些方案可以比较有效率的做这一块XD
6F:推 yyc1217:spring有RestTemplate 可以参考看看~ 07/21 18:58
多谢Y大推荐 刚刚是在看Jersey的client API
再佐以json lib来处理 POJO to json/json to POJO mapping
很需要这个东西 因为restful get到的json还是得转成自己系统的data格式
自己系统的data还是得转成json才有办法post出去
如果可以POJO跟json自动转换那就比较美妙一点了~
可是Jersey好像就是搭配MOXy或者jackson或者Jettisonc或者Json-P
挑了jackson 可是还是搞不太定在.request那边的语法..
不太清楚要怎麽把POJO转成json post出去或者json get到後转回POJO..
刚刚看了一下RestTemplate 相关网路教学文好像相对少了些
不过看官网doc 语法好像比较简洁易懂些
不过还是不太懂 get那边他是回传一个Event[]
所以他是将json转成event type array?
post那边看起来应该也是透过jackson将POJO转成json, 然後post
另外一个大问题是POJO中的类别 例如
http://www.journaldev.com/?p=2552 这个范例中的employee.java
@JsonSerialize(using=DateSerializer.class)
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
他透过@JsonSerialize来将Date转成json
那如果是Map呢? 因为我的会像是 order.java
大概会有 int orderId, String buyer 另外一个 Map detail
detail.put("苹果", 1000); detail.put("香蕉", 500)
所以json会大概长这样
{
"orderId" : "10023",
"buyer" : "小明",
"detail" : { "苹果" : 1000, "香蕉" : 500}
}
※ 编辑: JohnnyDell (123.194.238.68), 07/21/2014 21:11:25
※ 编辑: JohnnyDell (123.194.238.68), 07/21/2014 21:13:22
7F:推 yyc1217:doc的确很少,用法的话建议是去看该method的unit test 07/21 22:56
8F:推 Killercat:不过Java写Restful Interface的确比较麻烦.... 07/22 01:06
9F:→ Killercat:我前公司的做法是拿Djagle写後端 API呼叫Java 07/22 01:07
10F:→ Killercat:为了避免JVM频繁启动 所以把Java Daemon化 07/22 01:07
11F:→ Killercat:这样有个好处就是实作(JVM)跟界面(Django)分开且独立 07/22 01:08
12F:→ Killercat:Java写API其实不管用哪个Framework 都是很「巨」的 07/22 01:08
13F:→ Killercat:尤其是跟Spring连动 恩..... :D 07/22 01:10
14F:推 popcorny:我自己是用Jersey Server+Client 我不直接用Jersey的 07/22 09:43
15F:→ popcorny:Object to Json.. 而是自己先用Gson互转Json<->String 07/22 09:43
16F:→ popcorny:这样比较弹性一些,直接传进传出目标type虽然方便 07/22 09:44
17F:→ popcorny:但是方便的另一个面相就是没有弹性 07/22 09:44
我尝试了以下这样的code
http://paste.bradleygill.com/index.php?paste_id=77836
在透过jackson将Object转json这部分看起来是没有问题
可是json传进Jersey却出错了
Exception in thread "main" java.lang.NoClassDefFoundError:
com/fasterxml/jackson/core/Versioned
※ 编辑: JohnnyDell (122.116.194.46), 07/22/2014 13:49:43