2014-09-11 3 views
0

Поскольку глаголы нацелены на URL-адрес, такой как server.domain/getallrecords или server.domain/delete1record или что-то подобное. И getallrecords, delete1record специально разработаны для определенных целей, зачем нам нужны глаголы?Зачем использовать HTTP-глаголы?

Что разница между ПОЛУЧИТЬ вызовом

server.domain/getallrecords or 
server.domain/delete1record 

или положить (или пост или удалить) вызов к любому из выше URL?

ответ

4

Если вы идете RPC способ кажется, что HTTP-глаголы бесполезны.

HTTP-глаголы являются хорошим спутником HTTP-сервисов типа REST, поскольку ресурсо-ориентированные URI не содержат идентификатор действия, а ресурс.

Например, server.domain/getallrecords будет server.domain/records, и если вы выполните запрос на этот ресурс с использованием HTTP/GET, ресурс будет сопоставлен с методом сервера, который будет возвращать все записи, если вы выполняете тот же запрос, используя HTTP/POST, это создаст новую запись и т. д.

Вам необходимо решить: RPC или REST, и в зависимости от этого вы найдете полезные глаголы HTTP. Я бы посоветовал вам, что использование HTTP-глаголов - хороший способ использовать известный протокол - HTTP - с предопределенными глаголами, вместо того, чтобы изобретать свои собственные. Но опять же, это зависит от ваших собственных мыслей, предпочтений и требований.

+1

Позвольте мне добавить к этому ответу, что по умолчанию защита ссылок по умолчанию по умолчанию предотвратит доступ к глаголам, таким как 'DELETE',' POST' и 'PUT'. Если вы используете 'GET' для всего, вредоносный сайт может использовать код, например' ', чтобы инициировать попытку удаления всеми посетителями. Если один из ваших пользователей, которому разрешено это делать, посещает этот сайт, тогда у вас могут быть проблемы. –

+1

@ tom.dietrich BTW сценарий удаления записей с использованием 'GET' глагола - это просто недостаток дизайна, не так ли? –

+0

Я не думаю, что ASP.NET предотвращает перекрестные запросы домена GET по умолчанию, но я могу ошибаться. Я бы определенно предположил, что использование 'GET' для всего, что не просто извлекает данные, является плохой идеей. –

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