Я прочитал следующее:
Протокол передачи гипертекста (HTTP) — это жизнь Интернета. Он используется каждый раз, когда вы передаете документ или делаете запрос AJAX. Но HTTP удивительно относительно неизвестен среди некоторых веб-разработчиков.
Глаголы HTTP составляют основную часть нашего ограничения «единого интерфейса» и предоставляют нам аналог действия основанному на существительном ресурсе. Основными или наиболее часто используемыми глаголами HTTP (или методами, как они правильно называются) являются POST, GET, ПОЛОЖИЛ, а также УДАЛЯТЬ.
Ну, мы пришли к тому, что я потерял след.
PUT
а также DELETE
, они говорят. Я только слышал о POST
а также GET
и никогда не видел что-то вроде $_PUT
или же $_DELETE
проходя мимо в любом PHP-коде, который я когда-либо просматривал.
Для чего нужны эти методы (PUT) и (DELETE) и, если возможно, использовать их в PHP, как мне поступить?
Замечания: Я знаю, что это на самом деле не проблема, но я всегда пользуюсь возможностью обучения, если вижу ее, и очень хотел бы научиться использовать эти методы в PHP, если это возможно.
Что это за методы (PUT) и (DELETE) для …
Есть много слов, чтобы потратить, чтобы объяснить это, и я не достаточно квалифицирован, чтобы сделать это, но, как уже написано, быстрый обзор того, что Спецификация HTTP описывает.
Протокол в основном говорит это:
использование ПОЛУЧИТЬ когда вам нужно получить доступ к ресурсу и получить данные, и вам не нужно изменять или изменять состояние этих данных.
использование СООБЩЕНИЕ когда вам нужно отправить некоторые данные на сервер. Ex. из формы, чтобы сохранить эти данные где-нибудь.
использование ГОЛОВА когда вам нужно получить доступ к ресурсу и получить только заголовки из ответа, без каких-либо данных ресурса.
использование ПОЛОЖИЛ когда вам нужно заменить состояние некоторых уже существующих данных в этой системе.
использование УДАЛЯТЬ когда вам нужно удалить ресурс (относительно отправленного вами URI) в этой системе.
использование ОПЦИИ когда вам нужно получить параметры связи из ресурса, поэтому для проверка разрешенных методов для этого ресурса. Ex. мы используем его для правил запросов и разрешений CORS.
По сути, протокол — это набор правил, которые вы должны использовать в своем приложении, чтобы придерживаться его.
… и если это возможно
использовать их в PHP, как бы я пошел по этому поводу.
Из вашего приложения вы должны узнать, какой метод был использован с $_SERVER['REQUEST_METHOD']
и реагировать соответственно.
Некоторые приложения, имеющие дело с браузерами, которые не поддерживают методы PUT или DELETE, используют этот трюк, скрытое поле из html, со значением ex .:
<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) является 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/
РНР $_GET
а также $_POST
плохо названы. $_GET
используется для доступа к значениям параметров строки запроса, и $_POST
позволяет получить доступ к телу запроса.
Использование параметров строки запроса не ограничивается запросами GET, и другие виды запросов, кроме POST, могут поставляться с телом запроса.
Если вы хотите узнать глагол, использованный для запроса страницы, используйте $_SERVER['REQUEST_METHOD']
,
Что это за методы (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 вы на самом деле имели дело, а затем написать код, чтобы сделать соответствующее действие.