2009-12-30 3 views
1

У меня есть набор действий, которые возвращают временные ряды данных с интервалами, заданными в минуту. Они прекрасно работают с querystrings,
т.е.
/mycontroller/myaction?from=20091201 10:31&to=20091202 10:34
с или без URL закодирован двоеточием, но я подумал, что было бы неплохо иметь довольно URL /mycontroller/myaction/from-20091201 10:31/to-20091202 10:34
, но это сейчас поражает страх в услышать от IIS, как это не любит двоеточия в URI, поэтому я получаю ответы «Bad Request».mvc.net DateTime с частью времени в URI

Мой вопрос тогда, является рекомендуемым/стандартным курсом действий, чтобы я мог держать там время?

Нужно ли писать пользовательский ModelBinder для анализа моего собственного формата даты и времени? Если действия просто берут строки для from и to и анализируются с использованием специального формата, например "YYYYMMDD-HHmm". Можно ли указать какой-то пользовательский формат? Если да, то где? Или я должен просто отдать это за глупость и придерживаться параметров querystring?

О, и я вижу, что многие люди продолжают использовать URL RESTful; из того, что я прочитал, нет ничего, что говорит, что строки запроса не являются RESTful - это больше о соответствующем использовании существующих типов действий HTTP.

ответ

2

Вы правы REST не означает, что это не его структура папок, а не REST.

Структура пути для описания ресурса. Квесты могут все еще использоваться для описания фильтрованного подмножества такого ресурса. Диапазон дат полностью квалифицируется как критерий фильтра и, таким образом, должен быть отлично RESTful передан в качестве запроса.

+0

Спасибо Martijn, Итак, я беру это из вашего ответа, что вы бы не потрудились попробовать и втиснуть это в URI? Я думаю, что мне в основном понравилось, так как у меня также есть URI за один день, и это хорошо работает как controller/action/20091201 – lbp

+0

Да, я оставил бы свойства фильтра в виде строк запроса. Даже один день, если этот день не является ресурсом, я думаю:/Agenda/20091201/встречи/1 против/автомобили? BuiltAfter = 20091201. –