Правильный REST-форматированный URL с диапазонами дат - PullRequest
56 голосов
/ 09 марта 2012

У меня есть REST URL, чтобы все пользователи были отформатированы следующим образом: http://example.com/users

Чтобы получить индивидуального пользователя по идентификатору: http://example.com/users/12345

Чтобы получить все ставки пользователя: http://example.com/users/12345/bids

Чтобы получить все ставки пользователя между двумя датами: http://example.com/users/12345/bids/?start=01/01/2012&end=01/31/2012

или должно быть так: http://example.com/users/12345/bids/start/01012012/end/01312012

Я склоняюсь к 1-му диапазону дат, так как начало и конец не являются сущностями в домене. Как правильно отформатировать REST URL с диапазоном дат?

Спасибо

Tom

Ответы [ 3 ]

59 голосов
/ 09 марта 2012

http://example.com/users/12345/bids?start=01-01-2012&end=01-31-2012

Параметры запроса должны быть на том же «уровне», что и ставки (убрать косую черту перед знаком вопроса). Но вы, вероятно, захотите иметь поддержку, если они предоставляют только один параметр запроса. Таким образом, если бы они предоставили только «начало», то он получит все ставки после этой даты, или если они только предоставили «конец», он получит все ставки до этой даты.

Причина в том, что параметры запроса хороши для получения подмножества результатов из запроса GET. Они не переходят на другой уровень, потому что следующим уровнем обычно является один конкретный элемент с уникальным идентификатором.

8 голосов
/ 09 марта 2012

Я бы пошел с http://example.com/users/12345/bids?start=2012-01-01&end=2012-01-31.

  • Перед строкой запроса не должно быть косой черты.
  • Избегайте использования косых черт в строке запроса.Так будет проще.
0 голосов
/ 22 апреля 2014

если example.com/users/12345 получает пользователя с идентификатором 12345, то для получения всех пользователей по идентификатору это должен быть example.com/users с идентификатором, включенным в ответ как отношение. (обычно гиперссылка на этот ресурс).

Теперь чтобы получить их по диапазонам дат, нужно указать example.com/users/start=01-01-2012&end=01-31-2012

.

Часть 12345 - это идентификатор отдельного пользователя, это ресурс, поэтому его не следует включать для получения доступа остальных пользователей.

В качестве имени параметра оно должно быть значимым. start может означать что угодно, но start_date более значимо.

...