2015-03-23 2 views
0

У меня есть пара вопросов о внедрении PHP api за базовым клиентом.Магистральный и PHP API

PHP-апи, что я пишу это значит быть 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 мышлению или к использованию моделей и коллекций с базой данных?

ответ

0

Существует несколько способов достижения этого. Тот, который приходит прямо сейчас, на мой взгляд, заключается в том, чтобы модифицировать сервер для обработки параметра запроса, скажем 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 полностью прекрасна, это не против.

Ссылки:

http://backbonejs.org/#Collection-fetch

https://stackoverflow.com/a/15996003/566092

Смежные вопросы