Что такое ngResource "способ" обработки нумерации страниц
Создание класса ресурса User из углового ресурса хорошо в том смысле, что все пользователи становятся экземплярами User. Это упрощает CRUD для каждого человека. Но это будет работать только в том случае, если ответ является массивом
Вот простая демонстрация ( вдохновленная угловым)
// 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 все?