看板 java 關於我們 聯絡資訊
目前有一個實作了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://www.ptt.cc/bbs/java/M.1405931618.A.A3D.html ※ 編輯: JohnnyDell (122.116.194.46), 07/21/2014 16:34:29
Killercat:沒做過restful的話 真心建議從servlet做起吧 07/21 17:07
Killercat:Jersey根Restlet都滿好用的就是 07/21 17:08
Killercat:但是servlet不是IOC 會強迫你搞懂一些東西 07/21 17:08
K大 目前那個RESTful web service是已經完成的 我現在要做的只是在我的web service透過http去get data, post data這樣~
qrtt1:學習的情況由 servlet 做起,要寫產品就用些可靠的 07/21 17:45
qrtt1:framework 或 library 唄 :P 07/21 17:45
Q大 目前是在找有哪些方案可以比較有效率的做這一塊XD
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
yyc1217:doc的確很少,用法的話建議是去看該method的unit test 07/21 22:56
Killercat:不過Java寫Restful Interface的確比較麻煩.... 07/22 01:06
Killercat:我前公司的做法是拿Djagle寫後端 API呼叫Java 07/22 01:07
Killercat:為了避免JVM頻繁啟動 所以把Java Daemon化 07/22 01:07
Killercat:這樣有個好處就是實作(JVM)跟界面(Django)分開且獨立 07/22 01:08
Killercat:Java寫API其實不管用哪個Framework 都是很「巨」的 07/22 01:08
Killercat:尤其是跟Spring連動 恩..... :D 07/22 01:10
popcorny:我自己是用Jersey Server+Client 我不直接用Jersey的 07/22 09:43
popcorny:Object to Json.. 而是自己先用Gson互轉Json<->String 07/22 09:43
popcorny:這樣比較彈性一些,直接傳進傳出目標type雖然方便 07/22 09:44
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