О каких недостатках вы можете подумать, если я спроектирую свой 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