Я читал следующее:
Протокол передачи гипертекста (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.
Когда вы (ваш браузер, ваш клиент) запрашиваете ресурс на HTTP-сервере, вы должны использовать один из методов, который принимает протокол (HTTP). Поэтому вам нужно пройти:
поэтому запрос должен выглядеть так:
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']
.