3

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

这是一个简单的演示(受 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的全部内容吗?

4

0 回答 0