从REST Api获取数据

时间:2014-10-18 00:51:45

标签: android node.js spring web-services rest

我有一个带有Angular Webfrontend的node.js应用程序和一个通过rest连接到后端的Android App。现在我不确定如何将对象从节点返回到客户端:

方式1:

res.send(req.user);

如果我这样做,我可以从角度加载用户对象:

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

在我的Android应用程序中(简单的调用,我使用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

我知道,为什么会这样(除了为什么我必须使用第二张地图),但我想知道是否有任何更简单的方法来实现我的第二种方式。

我离开了Models和SpringRestTemplate代码,因为这是关于如何使用以下结构处理JSON的更一般的问题:

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

非常感谢任何有关如何处理此问题的指导!

1 个答案:

答案 0 :(得分:2)

这是简化的,但这将解决您的问题。

  1. 使用Json Schema to POJO
  2. 创建与JSON模式匹配的POJO
  3. 如果可以,请使用Retrofit或更适合Android的内容来使用API​​。
  4. 创建改造服务(查看上面的改造链接),然后连接到API,您将拥有一个User对象。
  5. 选项B: 使用GSON从弹簧中将对象反序列化为POJO。但我建议使用Retrofit或类似的东西,因为它更简单,更清洁。