Строка запроса с ключами без значений - PullRequest
2 голосов
/ 16 апреля 2011

О каких недостатках вы можете подумать, если я спроектирую свой REST API со строками запроса без значений параметров?Примерно так:

http://host/path/to/page?edit
http://host/path/to/page?delete
http://host/path/to/page/+commentId?reply

Вместо, например:

http://host/api/edit?page=path/to/page
http://host/api/delete?page=path/to/page
http://host/api/reply?page=path/to/page&comment=commentId

( Edit: Любые ссылки page-X?edit и page-X?delete будут вызывать запросы GET, но не будут 'фактически не редактируют или удаляют страницу. Вместо этого они показывают страницу с <form>, в которой можно редактировать page-X, или <form> с Действительно удалить страницу-X? диалоговое окно подтвержденияФактические запросы на редактирование / удаление будут представлять собой запросы POST или DELETE. Так же, как host/api/edit?page=path/to/page показывает страницу с правкой <form>. / Edit. )

Примечание Примечаниечто ?action - это не то, как строки запроса обычно форматируются.Вместо этого они обычно форматируются так: ?key=value;key2=v2;key3=v3

Более того, иногда я бы использовал URL-адреса, подобные этому:

http://host/path/to/page?delete;user=spammer

То есть я бы включил параметр строки запросабез значения (delete) и одним параметром со значением (user=spammer) (чтобы удалить все комментарии, опубликованные spammer )

Моя веб-инфраструктура прекрасно справляется с запросомстроки типа ?reply.Итак, я думаю, что меня больше всего интересует, можете ли вы подумать о каких-либо проблемах со стороны клиента?Или какие-либо проблемы, я должен решить использовать другой веб-фреймворк?(Знаете ли вы, если используемые вами фреймворки предоставляют информацию о строках запроса без значений параметров?)

(Насколько я понимаю, прочитав http://labs.apache.org/webarch/uri/rfc/rfc3986.html, я понимаю, что формат строки запроса, который я использую, подходит, но чтоэто имеет значение для всех клиентских и серверных платформ повсюду.)

(В настоящее время я использую фреймворк Lift-Web. Я также тестировал Play Framework, и было возможно получить параметры строки запроса без значениятак что и Play, и Lift-Web, с моей точки зрения, в порядке.)


Вот связанный вопрос о строках запроса без значений.Однако он имеет дело с функциями ASP.NET, возвращающими null в некоторых случаях: Доступ к строковым параметрам запроса без значений в ASP.NET

С уважением, Kaj-Magnus

1 Ответ

4 голосов
/ 16 апреля 2011

Параметры запроса без значения не являются проблемой, но помещение действий в URI, в частности деструктивных, - это.

Вы всерьез думаете о "спокойном" дизайне, и наличие GET будет разрушительным действием?

...