2013-07-04 2 views
2

С/api/v1/account/names Я запрашиваю все имена в моей БД, но что, если мне нужно знать количество записей (имен)? (Для подкачки)Лучший подход для запроса количества записей в таблице с REST

Какой подход следующей REST-URLS вы бы рекомендовали:

  1. /API/v1/счет/имена/кол
  2. /API/v1/счет/имена рассчитывать? - (не очень хорошо работает с Джерси)
  3. /API/v1/счет/названия/записи
  4. ваше предложение ...

результат апи/v1/счета/названия и один для api/v1/account/names # whatever # отличается.

ТНХ

+0

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

+0

Возможно, это другой подход - вообще избегайте этого вызова. Это, наверное, лучший. Я так сильно зациклился на идее запроса количества записей, которые я упускал из виду эту проблему. Можете ли вы написать ответ, чтобы я мог оценить вас? –

+0

Написал ответ. –

ответ

1

Для подкачки, вы не должны делать счета запрос, но запрос все сразу: количество и записи страниц.

На вашей БД, проблема что-то вроде (PGSQL подобный синтаксис - Извлечение третьей страницы из 25 записей, где значение столбца 4 «х»)

Select 
     row1, row2, row3, count(*) over() 
     from MyShema.MyTable 
     where row4 = 'x' order by row1 asc 
     offset 75 limit 25; 

результирующего будет содержать общее количество на 4-м столбце (каждой строки).

Затем построить ответ JSon, который будет выглядеть как

{ 
    totalCount: 1280,  -- value in row 1 column 4 
    offset: 75, 
    rows: [ 
     [row1_1, row1_2,row1_3], 
     [row2_1, row2_2,row2_3], 
     ... 
     [row25_1, row25_2,row25_3], 
    ] 
} 

, который содержит общее количество строк в время запроса, смещение и содержание страницы.

Этот ответ может быть легко обработан сетью поискового вызова.

0

Если GET /api/v1/account/names возвращает список имен:

{ 
    "names": ["Foo", "Bar", "Baz"] 
} 

, то почему бы не но count элемента в этот список:

{ 
    "names": ["Foo", "Bar", "Baz"], 
    "count": 3 
} 

Вы можете запросить эти подресурсы в GET /api/v1/account/names/count:

{ 
    "count": 3 
} 
1

Я думаю, что наилучшим подходом является c ombine оба этих запроса в одном и вернуть количество записей, например, в заголовке ответа, чтобы гарантировать, что записи и их счет были получены в одно и то же время.

+0

Извините, я принял ответ BGR - это то же самое, но немного подробнее ... –

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