2014-09-17 4 views
0

Моя новое приложение Основная коллекция по-прежнему очень простая:Backbone.js коллекции URL схема

var TransactionCollection = Backbone.Collection.extend({ 
    model: Transaction, 
    url: '/api/transactions' 
}); 

Это хорошо во время разработки, но сейчас я хотел бы добавить некоторые нумерации страниц и фильтрации функций.

Я не уверен, какую схему URL я должен использовать. Я имею в виду:

  • страницу 1, все операции, январь 2014 =>/API/операции/2014/01
  • страница 2, все операции, январь 2014 =>/API/операции/2014/01 р? = 2
  • страница 1, все операции, февраль 2014 =>/API/сделки/2014/02
  • страница 1, только доходы, июнь 2014 =>/апи/операции/доходы/2014/06
  • страница 2, только результаты, июнь 2014 года =>/апи/операции/исходы/2014/06 /? P = 2

Является ли это хорошей структурой, на ваш взгляд?

В каждом случае, что лучше всего подходит для управления такой коллекцией? Я предполагаю, что могу сделать свойство url: функцией, чтобы динамически обрабатывать несколько параметров (страница, фильтр, период), переданных в коллекцию до ее получения. Или лучше передать параметры с каждой выборкой?

+1

http://blog.mwaysolutions.com/2014/06/05/10-б est-practices-for-better-restful-api/ –

+0

ok, поэтому я должен использовать параметры запроса GET для всех вышеперечисленных случаев, не так ли? –

+0

да, я добавил примеры в свой ответ для каждого вашего URL-адреса. –

ответ

2

на основе best practices

  • страницу 1, все сделки, январь 2014 =>/API/сделки? Год = 2014 & месяц = ​​01
  • страница 2, все операции, январь 2014 =>/апи/сделки? год = 2014 & месяц = ​​01 & смещение = 20 & предел = 20
  • страница 1, все операции, февраль 2014 =>/API/сделки? год = 2014 & месяц = ​​02
  • страница 1, только доходы, июнь 2014 =>/API/сделки? Год = 2014 & месяц = ​​06 & фильтр = доходы
  • страница 2, только результатов, июнь 2014 =>/API/сделки? Год = 2014 & месяц = 06 & фильтра = исходы & смещения = 20 & предела = 20

Чтобы отправить использование строки запроса data атрибут в АЯКСЕ опции, как этот

transactionCollection.fetch({ 
    data: { 
     limit: 20, 
     offset: 20, 
     year: "2014", 
     month: "01" 
    } 
}); 
+0

. URL-путь должен использоваться только для «ресурсов», а не для параметров поиска, таких как даты, разбивка на страницы и т. Д.? –

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