javascript – REST:返回复杂的嵌套数据与多个调用

前端之家收集整理的这篇文章主要介绍了javascript – REST:返回复杂的嵌套数据与多个调用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个由NodeJS服务的Ang api到AngularJS前端.

我与用户合作:

GET  /api/users  #Returns all users
POST /api/users  #Create  new user

GET   /api/users/:id   #Return a user
PUT   /api/users/:id   #Edit a user
DELTE /api/users/:id   #Delete a user

这是一个用户

{
  login : "admin"
  email : "admin@admin.com"
  pass  : "hashedpassword"
  ...
}

我的用户可以属于群组

GET   /api/users/:id/groups   #Return the groups of a user

它们也可以有约束或可以从组中继承约束

GET   /api/users/:id/constraints   #Return the constraints of a user
GET   /api/groups/:id/constraints   #Return the constraints of a group

问题 :

我正在创建一个管理页面,显示所有用户,他们的组,他们的约束.

我是不是该 :

>在javascript(Angular)前端的for循环中发出许多请求?

就像是 :

$http.get(/api/users).then(function(result) {
  result.data.forEach(function(user) {
    $http.get('/api/users/'+user.data.id+'/groups).then(function(groups) {
      groups.forEach(function(group) {
        $http.get('/api/groups/'+group.data.id+'/constraints)
      })
    })
  })
})

>创建路径/ api / users / withConstraintsAndGroups

这将返回包含其组和约束的所有用户的大列表.

我发现解决方案1非常好,可维护,简单,通用,但我担心性能非常糟糕

我发现解决方案2难看,难以维护,难以编码,不通用但性能良好

我应该选择哪种解决方案?

解决方法

你的问题基本归结为:

Which is better,one big HTTP request,or many small ones?

要记住的一件事是客户端和服务器之间的预期网络延迟(ping时间).在具有良好带宽的高延迟情况下,许多小请求将比一个大请求表现得差得多.

此外,有一个大的请求可以为compressing the response提供更好的效率,并避免extra HTTP requests and response headers的开销.

说了这么多,我仍然建议你从选项1开始,完全是因为你声明你很容易编码.然后看看它是否符合您的要求.如果没有,那么尝试选项2.

作为最后一点,我通常更喜欢对很多小请求提出一个大请求,因为这样可以很容易地将每个请求定义为完全应用或回滚的事务.这样我的客户端就不会遇到一些状态,其中一些小的请求成功而另一些则失败,并且他们现在的API提供的数据本地副本不一致.

猜你在找的JavaScript相关文章