HTTP-протокол PUT и DELETE и их использование в PHP

Введение

Я читал следующее:

Протокол передачи гипертекста (HTTP) – это жизнь в Интернете. Он используется каждый раз, когда вы переносите документ, или делаете запрос AJAX. Но HTTP на удивление относительно неизвестен среди некоторых веб-разработчиков.

Глаголы HTTP составляют основную часть ограничения «унифицированного интерфейса» и предоставляют нам действие, эквивалентное ресурсу, основанному на существительных. Первичными или наиболее часто используемыми HTTP-глаголами (или методами, так как они правильно называются) являются POST, GET, PUT и DELETE .

А?

Ну, мы пришли к тому, что я потерял все.

Говорят, PUT и DELETE . Я только слышал о POST и GET и никогда не видел что-то вроде $_PUT или $_DELETE проходящих в любом PHP-коде, который я когда-либо просматривал.

Мой вопрос

Каковы эти методы (PUT) и (DELETE), и если можно использовать их в PHP, как бы я это делал.

Примечание. Я знаю, что это не проблема, но я всегда получаю возможность обучения, если увижу ее, и очень хотел бы научиться использовать эти методы на PHP, если это возможно.

    Каковы эти методы (PUT) и (DELETE) для …

    Есть много слов, которые нужно потратить, чтобы объяснить это, и я недостаточно квалифицирован, чтобы сделать это, но, как уже было опубликовано, краткое описание того, что описывает спецификация HTTP .

    Протокол в основном говорит об этом:

    • используйте GET, когда вам нужно получить доступ к ресурсу и получить данные , и вам не нужно изменять или изменять состояние этих данных.

    • используйте POST, когда вам нужно отправить некоторые данные на сервер. Ex. из формы, чтобы сохранить эти данные где-то.

    • используйте HEAD, когда вам нужно получить доступ к ресурсу и получить только заголовки из ответа , без каких-либо данных ресурсов.

    • используйте PUT, когда вам нужно заменить состояние некоторых данных, уже существующих в этой системе.

    • используйте DELETE, когда вам нужно удалить ресурс (относительно вашего URI, который вы отправили) в этой системе.

    • используйте OPTIONS, когда вам нужно получить параметры связи с ресурсом, поэтому для проверки разрешенных методов для этого ресурса . Ex. мы используем его для правил запроса и разрешений CORS.

    • Вы можете прочитать о двух оставшихся методах этого документа, извините, что я никогда не использовал его.

    В основном протокол – это набор правил, которые вы должны использовать из своего приложения, чтобы придерживаться его.


    … и если можно использовать их в PHP, как бы я это сделал.

    Из вашего приложения вы должны получить, какой метод использовался с $_SERVER['REQUEST_METHOD'] и реагировать соответственно.

    Некоторые приложения, работающие с браузерами, которые не поддерживают методы PUT или DELETE, используют этот трюк, скрытое поле из html, со значением, например:

     <input name="_method" type="hidden" value="delete" /> 

    Таким образом, из приложения вы теперь можете распознать это как запрос DELETE.


    Следуйте простому описанию того, как PHP обрабатывает параметры:

    Когда вы (ваш браузер, ваш клиент) запрашиваете ресурс на HTTP-сервере, вы должны использовать один из методов, который принимает протокол (HTTP). Поэтому вам нужно пройти:

    • МЕТОД
    • Ури ресурса
    • Заголовки запроса, такие как User-Agent, Host, Content-Length и т. Д.
    • (Необязательный орган запроса)

    поэтому запрос должен выглядеть так:

     GET /something/index.php?maybe=aparameter 

    Теперь, внутри вашего приложения, PHP принимает параметры из этого запроса GET и вставляет их в массив суперглобального (доступного для всего вашего приложения). Таким образом, вы можете получить доступ к $_GET['maybe'] который возвращает «aparameter».

    В случае запроса POST вы запрашиваете ресурс на HTTP-сервере аналогичным образом, но с важным отличием. Вы предоставляете данные внутри тела запроса:

     POST /something/index.php (body) maybe=aparameter 

    Теперь, внутри вашего приложения, PHP из этого запроса POST принимает параметры и вставляет их в массив суперглобального (доступного всего вашего приложения). Таким образом, вы можете получить доступ к $_POST['maybe'] который возвращает «aparameter».

    Также обратите внимание на код состояния ответа (например, если вы получили запрос PUT, и вы обновили этот ресурс без ошибок, вы должны вернуть статус 204 – нет содержимого) .

    Способ использования данных PUT из PHP:

     $method = $_SERVER['REQUEST_METHOD']; if ('PUT' === $method) { parse_str(file_get_contents('php://input'), $_PUT); var_dump($_PUT); //$_PUT contains put fields } 

    Каковы эти методы (PUT) и (DELETE)

    В спецификации HTTP описаны .

    В двух словах, и несколько упрощая, PUT предназначен для загрузки файла в URL-адрес, а DELETE – для удаления файла из URL-адреса.

    никогда не видел что-то вроде $_PUT или $_DELETE проходящих в любом PHP-коде, который я когда-либо просматривал

    $_POST и $_GET ужасно названы суперглобалами. $_POST – это данные, обработанные из тела запроса. $_GET предназначен для анализа данных из URL. Нет ничего, что строго связывает данные в любом из этих мест (особенно URL) с конкретным методом запроса.

    Запросы DELETE заботятся только о пути URL-адреса, поэтому нет данных для синтаксического анализа.

    Запросы PUT обычно касаются всего тела запроса (а не его синтаксического анализа), к которому вы будете обращаться с file_get_contents('php://input'); ,

    и если можно использовать их в PHP, как бы я это сделал.

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

    Наиболее подходящим местом для использования этих методов (PUT и DELETE) является REST API. Если мы используем методы http для определения режима работы, например, вы хотите получить любые ресурсы, то вы можете использовать следующее:

     GET http://api.example.com/employee/<any_id> 

    для добавления нового элемента:

     POST http://api.example.com/employee/ 

    для обновления или редактирования:

     PUT http://api.example.com/employee/ 

    для удаления существующего ресурса:

     DELETE http://api.example.com/employee/1 

    и т.п.

    Теперь на стороне PHP вам просто нужно прочитать, какой метод HTTP используется, чтобы вы могли совершить действие в соответствии с этим.

    есть много доступных библиотек, которые могут сделать это для вас. это очень хороший пример: http://phphttpclient.com/

    PHP $_GET и $_POST плохо названы. $_GET используется для доступа к значениям параметров строки запроса, а $_POST позволяет получить доступ к телу запроса.

    Использование параметров строки запроса не ограничено запросами GET, а другие запросы, кроме POST, могут иметь тело запроса.

    Если вы хотите узнать глагол, используемый для запроса страницы, используйте $_SERVER['REQUEST_METHOD'] .