Зачем нам нужно что-то большее, чем HTTP GET, PUT, POST? - PullRequest
11 голосов
/ 29 сентября 2008

Какова практическая польза от использования HTTP GET, PUT, DELETE, POST, HEAD? Почему бы не сосредоточиться на их поведенческих преимуществах (безопасности и идемпотентности), забыть их имена и использовать GET, PUT или POST в зависимости от того, какое поведение мы хотим?

Почему бы нам не использовать только GET, PUT и POST (и отбрасывать HEAD, DELETE)?

Ответы [ 14 ]

0 голосов
/ 16 октября 2008

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

Кроме того, команда HEAD может использоваться для улучшения пользовательского опыта при (потенциально больших) загрузках файлов. Вы вызываете HEAD, чтобы узнать, насколько большим будет ответ, а затем вызываете GET, чтобы фактически извлечь контент.

0 голосов
/ 29 сентября 2008

Война с веб-сервером более ранних дней, вероятно, вызвала ее.

В HTTP 1.0, написанном в 1996 году, были только GET, HEAD и POST . Но, как вы можете видеть в Приложении D , поставщики начали добавлять свои собственные вещи. Таким образом, чтобы поддерживать HTTP-совместимость, они были вынуждены сделать HTTP 1.1 в 1999 .

Однако HTTP / 1.0 недостаточно учитывает эффекты иерархических прокси, кеширование, необходимость постоянные соединения или виртуальные хосты. Кроме того, распространение не полностью реализованных приложений, называющих себя «HTTP / 1.0» потребовал изменения версии протокола для два взаимодействующих приложения для определения истинных возможностей друг друга.

Эта спецификация определяет протокол, называемый «HTTP / 1.1». Этот протокол включает в себя более строгие требования, чем HTTP / 1.0 в порядке обеспечить надежную реализацию своих возможностей.

0 голосов
/ 29 сентября 2008

Вы можете использовать только GET и POST, но тогда вы теряете часть точности и ясности, которые обеспечивают PUT и DELETE. POST - это шаблонная операция, которая может означать что угодно. Поведение PUT и DELETE очень хорошо определено. Если вы думаете об API управления ресурсами, то GET, PUT и DELETE, вероятно, покрывают 80% -90% необходимой функциональности. Если вы ограничиваете себя GET и POST, то 40% -60% ваших API-адресов доступны с использованием плохо указанного POST.

0 голосов
/ 29 сентября 2008

Для ограничения неоднозначности, которая позволит лучше / проще повторно использовать наши простые REST API.

...