什么是处理集合分页的ngResource“方式”

时间:2014-06-12 21:05:32

标签: angularjs rest http-headers ngresource

从角度资源创建用户资源类是很好的方式,所有用户都成为用户的一个实例。这简化了每个人的CRUD。但它只有在响应是数组时才有效

这是一个简单的演示(inspired by angular

// Define User class
var User = $resource('/user/:userId', {userId: '@id'}, {
    query: {method: 'GET', isArray: true, params: {limit: 25} }
});

// We can retrieve a collection from the server
var users = User.query(function() {
    // GET: /user?limit=25
    // server returns: [ {id:456, name:'jimmy'}, {...} ];

    var user = users[0];
    // each user is an instance of User
    expect(user instanceof User).toEqual(true);
    user.relation = "Single";
    // non GET methods are mapped onto the instances
    user.$save();
});

现在你有1000个用户,处理分页的最佳做法是什么?

我在我的日子里已经看到了很多API,这将是他们全部批量合作的一个例子。 (甚至包括响应状态200 OK,另一个状态代码和错误消息)

{
    errors: null,
    status: 200
    data: {
        href: "/user?limit=30&offset=100&online=true",
        offset: 100,
        limit: 25,
        totalItems: 987,
        totalPages: 45, // Math.celi(totalItems / limit)
        currentPage: 4,
        first: { href: "/user?limit=25&online=true" },
        previous: { href: "/user?limit=25&offset=75&online=true" },
        next: { href: "/user?limit=25&offset=125&online=true" },
        last: { href: "/user?limit=25&offset=975&online=true" },
        items: [
            {id: 456, name: "jimmy"}
        ]
    }
}

如果这是一个公共API,您是否希望在json响应中提供所有/部分信息?我个人认为这种绘制和不必要的服务器工作可能会或可能不会被所有用户使用

  • 错误消息应回复状态代码> = 400
  • 状态代码已在标题上提供,为什么还有另一个?
  • 如果你在没有进行任何响应转换的情况下得到一个数组而不是一个对象,那么ngResource就可以了。
  • 如果您只知道用户总数,则知道其他所有信息
    • 这需要json返回一个对象来发送该信息,但你也可以使用头文件并将响应保存为数组

我可能只想使用范围请求标头进行某种206部分内容响应,我只将其用于文件字节。但也可以使用任何其他类型的收藏品吗?

Range: user=75-100,600- ;get user 75 to 100 and 600 to 978

不是206的全部内容吗?

0 个答案:

没有答案