2013-06-29 2 views
2

У меня есть SPA (одностраничное приложение), поэтому он широко использует AJAX для получения и сохранения данных на сервере и с сервера. В одном случае я разрешаю администратору просматривать/добавлять/редактировать/удалять пользователей. Некоторые современные URLs для этой области выглядело что-то вроде:Должен ли я использовать URL стиля стиля REST с PUT и DELETE в своем веб-приложении?

(GET) /users?userId=1 // get user with id of 1 
(POST) /users?userId=1&firstName=Jim // update the first name of the user with id 1 
(POST) /users?firstName=Bob // create a new use with the first name Bob 
(POST) /users?userId=1&delete=true // delete user with id of 1 

Потратив некоторое время работал на RESTful API в родственном проекте, мне интересно, если это предпочтительнее использовать типы HTTP (GET, POST, PUT, DELETE) в веб-приложении. Кроме того, лучше ли использовать параметр пути для идентификатора пользователя вместо параметра запроса? Таким образом, эти URL-адреса (переписать выше) являются лучшим вариантом в долгосрочной перспективе:

(GET) /users/1 // get user with id of 1 
(PUT) /users/1?firstName=Jim // update the first name of the user with id 1 
(POST) /users?firstName=Bob // create a new use with the first name Bob 
(DELETE) /users/1 // delete user with id of 1 

ответ

1

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

+0

Мне должно быть ясно, что я не проектирую RESTful API в этом случае, а просто типичное веб-приложение для SPA с большим количеством AJAX. Мне нужно поддерживать IE 8 и выше вместе с современными версиями Firefox и Chrome. Будут ли эти браузеры поддерживать PUT и DELETE через AJAX? Я знаю, что html-формы - это совсем другая история. – Jeremy

+0

Похоже, что поскольку браузер поддерживает собственный XMLHTTPRequest, он должен отлично работать в AJAX. http://stackoverflow.com/questions/165779/are-the-put-delete-head-etc-methods-available-in-most-web-browsers – Mgetz

 Смежные вопросы

  • Нет связанных вопросов^_^