2014-10-18 223 views
0

我有一個node.js應用程序,帶有一個Angular Webfrontend和一個Android應用程序,通過休息連接到後端。現在,我不知道如何從節點對象返回客戶端:從REST獲取數據Api

方法1:

res.send(req.user); 

如果我不喜歡這樣我可以加載的角度,如用戶對象:

return $http.post('/api/login', user) 
    .success(function (data) { 
    $rootScope.currentUser = data; 

,在我的Android應用(simplyfied電話,我使用Spring和GSON):

user = SpringRestTemplate.getRestTemplate().postForObject(Routes.getLogin(), user, User.class); 

這工作得很好,但我其實想什麼,從節點返回將是我

方式2:

res.send({user: req.user }); 

的角度都幾乎保持不變:

$rootScope.currentUser = data.user; 

但對於android我沒有發現任何其他方式,而不是自己寫json轉換:

ResponseEntity<Map> map = SpringRestTemplate.getRestTemplate().postForEntity(Routes.getLogin(), dUser, Map.class); 
LinkedTreeMap<String, User> map2 = (LinkedTreeMap<String, User>) map.getBody(); 
Map ltm = (Map) map.get("user"); 

String id = (String) ltm.get("_id"); 
String userName = (String) ltm.get("userName"); 
// ... and so on 

我明白了,爲什麼會出現這種情況(除了爲什麼我必須使用第二張地圖),但我想知道是否有更簡單的方法來實現我的第二種方式。

我離開了模型和SpringRestTemplate代碼出來,因爲這是對如何結構如下處理JSON更一般的問題:

{ user : { _id: "1", userName: "foo", ...}} 

對如何處理這個問題的任何指導,將多不勝感激!

回答

2

這是簡化的,但這會解決您的問題。

  1. 創建使用Json Schema to POJO
  2. 匹配的JSON架構一個POJO如果可以,用Retrofit或一些更容易適合於Android的消耗API。
  3. 創建一個翻新服務(查看上面的翻新鏈接),然後連接到API,您將擁有一個用戶對象。

選項B:使用 到GSON您的反序列化對象到從春天的東西一個POJO。但我建議使用改造或類似的更容易和更清潔。

+0

我通常只使用apaches lib來提出請求,它工作得很好。我不認爲復古適合已經得到支持了。它建立在Apache上 – NightSkyCode 2014-10-18 02:46:29

+0

@HopeRunsDeep https://github.com/square/retrofit最新的提交2天前在寫這篇文章的時候 – biegleux 2014-10-18 05:01:08