Правильный отформатированный URL-адрес REST с диапазонами дат
У меня есть URL REST, чтобы все пользователи отформатировались следующим образом: http://example.com/users
Чтобы получить отдельного пользователя по id: 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
Я склоняюсь к URL-адресу 1-го диапазона даты, так как начало и конец не являются сущностями в домене. Каков правильный способ форматирования URL-адреса REST с диапазоном дат?
Спасибо,
Tom
Ответы
Ответ 1
http://example.com/users/12345/bids?start=01-01-2012&end=01-31-2012
Введите параметры запроса на том же уровне, что и ставки (удалите косую черту перед вопросительным знаком). Но вы, вероятно, захотите получить поддержку, если они предоставляют только один параметр запроса. Поэтому, если они предоставили только "старт", после этого он получит все ставки после этой даты или если они предоставят только "конец", он получит все ставки до этой даты.
Причиной является то, что параметры запроса хороши для GETting подмножества результатов из запроса GET. Они не идут на другой уровень, потому что следующим уровнем обычно является один конкретный элемент с уникальным идентификатором.
Ответ 2
Я бы пошел с http://example.com/users/12345/bids?start=2012-01-01&end=2012-01-31
.
- В строке запроса не должно быть косой черты.
- Избегайте использования косой черты в строке запроса. Это будет проще.
Ответ 3
Если example.com/users/12345 получает пользователя с идентификатором 12345, то для того, чтобы получить всех пользователей по id, он должен быть example.com/users с идентификатором, включенным в ответ в качестве отношения. (обычно это гиперссылка на этот ресурс).
Теперь, чтобы получить их по диапазонам дат, это должно быть example.com/users/start=01-01-2012&end=01-31-2012
Часть 12345 - это идентификатор отдельного пользователя, это ресурс, поэтому его не следует включать, чтобы получить остальных пользователей.
Как имя параметра, оно должно быть значимым. начало могло означать что угодно, но start_date более выражен.