[問題] 請問關於RESTFul的使用

看板java作者 (強尼戴爾)時間11年前 (2014/07/21 16:33), 11年前編輯推噓5(5012)
留言17則, 4人參與, 最新討論串1/1
目前有一個實作了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

07/21 17:07, , 1F
沒做過restful的話 真心建議從servlet做起吧
07/21 17:07, 1F

07/21 17:08, , 2F
Jersey根Restlet都滿好用的就是
07/21 17:08, 2F

07/21 17:08, , 3F
但是servlet不是IOC 會強迫你搞懂一些東西
07/21 17:08, 3F
K大 目前那個RESTful web service是已經完成的 我現在要做的只是在我的web service透過http去get data, post data這樣~

07/21 17:45, , 4F
學習的情況由 servlet 做起,要寫產品就用些可靠的
07/21 17:45, 4F

07/21 17:45, , 5F
framework 或 library 唄 :P
07/21 17:45, 5F
Q大 目前是在找有哪些方案可以比較有效率的做這一塊XD

07/21 18:58, , 6F
spring有RestTemplate 可以參考看看~
07/21 18:58, 6F
多謝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

07/21 22:56, , 7F
doc的確很少,用法的話建議是去看該method的unit test
07/21 22:56, 7F

07/22 01:06, , 8F
不過Java寫Restful Interface的確比較麻煩....
07/22 01:06, 8F

07/22 01:07, , 9F
我前公司的做法是拿Djagle寫後端 API呼叫Java
07/22 01:07, 9F

07/22 01:07, , 10F
為了避免JVM頻繁啟動 所以把Java Daemon化
07/22 01:07, 10F

07/22 01:08, , 11F
這樣有個好處就是實作(JVM)跟界面(Django)分開且獨立
07/22 01:08, 11F

07/22 01:08, , 12F
Java寫API其實不管用哪個Framework 都是很「巨」的
07/22 01:08, 12F

07/22 01:10, , 13F
尤其是跟Spring連動 恩..... :D
07/22 01:10, 13F

07/22 09:43, , 14F
我自己是用Jersey Server+Client 我不直接用Jersey的
07/22 09:43, 14F

07/22 09:43, , 15F
Object to Json.. 而是自己先用Gson互轉Json<->String
07/22 09:43, 15F

07/22 09:44, , 16F
這樣比較彈性一些,直接傳進傳出目標type雖然方便
07/22 09:44, 16F

07/22 09:44, , 17F
但是方便的另一個面相就是沒有彈性
07/22 09:44, 17F
我嘗試了以下這樣的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
文章代碼(AID): #1JpD1Yez (java)
文章代碼(AID): #1JpD1Yez (java)