У меня есть пара вопросов о внедрении PHP api за базовым клиентом.
PHP api, который я пишу, должен быть RESTful, и результат работает нормально с запросами GET
, PUT
, POST
и DELETE
.
Однако использование API значительно расширилось, и в результате мы хотим оптимизировать запросы.
Мы можем собрать проекты, выполнив следующие действия на стороне клиента,
var projects = new App.Collections.Projects();
projects.fetch({ reset: true });
На данный момент стоит отметить, что проект может иметь один из 4 статусов, архивированных, ожидающих, активных, выполненных.
Это запускает запрос GET. http://app.com/projects
возвращает все проекты для пользователя, которого пользователь, которого мы используем, возвращает 1200 проектов (каждый проект представляет собой довольно большой объем данных). Это приводит к тому, что у PHP заканчивается память.
Мы хотим оптимизировать запрос, поэтому вместо запроса данных в одном блоке он запрашивает данные в 4 раза.
т.е. Получить все незавершенные проекты - затем получить все завершенные проекты и т.д.
Сначала нам нужно создать коллекцию для каждого статуса проекта, затем запустить выборку для каждого состояния, а затем объединить результаты в одну коллекцию, похоже ли это как разумный вариант?
Это противоречит анализу REST или использованию базовых моделей и коллекций?
Существует несколько способов достижения этого. Тот, который сейчас приходит в голову, состоит в том, чтобы модифицировать сервер для обработки параметра запроса say status
а затем передать status
при извлечении коллекции.
var projects = new App.Collections.Projects();
projects.fetch({
reset: true,
data:{ status : 'ACTIVE'}
}).done(function(){
projects.fetch({
data : { status: 'ARCHIVED'},
remove:false
}).done(function(){
projects.fetch({
remove:false,
data : {status:'PENDING'}
});
})
});
Передача параметров запроса в сервер REST совершенно прекрасна, и ничего против.
Рекомендации: