Что это за методы (PUT) и (DELETE) для ...
Есть много слов, чтобы объяснить это, и я недостаточно опытен, чтобы сделать это, но, как уже писалось, краткое описание того, что спецификация HTTP.
Протокол в основном говорит следующее:
используйте GET, когда вам нужно получить доступ к ресурсу и получить данные, и вам не нужно изменять или изменять состояние этих данных.
используйте POST, когда вам нужно отправить некоторые данные на сервер. Бывший. из формы, чтобы где-нибудь сохранить эти данные.
используйте HEAD, когда вам нужно получить доступ к ресурсу и получить только заголовки из ответа, без каких-либо данных о ресурсах.
используйте PUT, когда вам нужно заменить состояние некоторых данных, уже существующих в этой системе.
используйте УДАЛИТЬ, когда вам нужно удалить ресурс (относительно отправленного вами URI) в этой системе.
используйте OPTIONS, когда вам нужно получить параметры связи от ресурса, то есть для проверки разрешенных методов для этого ресурса. Бывший. мы используем его для запросов CORS и правил разрешений.
Вы можете прочитать об оставшихся двух методах в этом документе, извините, я никогда не использовал их.
По сути, протокол - это набор правил, которые вы должны использовать в своем приложении для его соблюдения.
... и если их можно использовать в PHP, как бы я это сделал.
В своем приложении php вы можете узнать, какой метод использовался, просмотрев суперглобальный массив $_SERVER
и проверив значение поля REQUEST_METHOD
.
Итак, из вашего php-приложения вы теперь можете распознать, является ли это запросом DELETE или PUT, например. $_SERVER['REQUEST_METHOD'] === 'DELETE'
или $_SERVER['REQUEST_METHOD'] === 'PUT'
.
* Также имейте в виду, что некоторые приложения, работающие с браузерами, которые не поддерживают методы PUT или DELETE, используют следующий трюк, скрытое поле из html-формы с глаголом, указанным в его атрибуте value, например :
<input name="_method" type="hidden" value="delete" />
Следуйте примеру с небольшим описанием возможного способа обработки этих двух HTTP-запросов
Когда вы (ваш браузер, ваш клиент) запрашиваете ресурс у HTTP-сервера, вы должны использовать один из методов, которые принимает протокол (HTTP). Итак, ваш запрос должен пройти:
- МЕТОД
- Uri ресурса
- Заголовки запроса, такие как User-Agent, Host, Content-Length и т. Д.
- (Необязательный текст запроса)
Теперь, хотя вы можете получать данные из запросов POST и GET с соответствующими глобальными переменными ($_GET
, $_POST
), в случае запросов PUT и DELETE PHP не предоставляет эти глобальные переменные быстрого доступа; Но вы можете использовать значение $_SERVER['REQUEST_METHOD']
для проверки метода в запросе и, соответственно, обработки вашей логики.
Итак, запрос PUT будет выглядеть так:
PUT /something/index.php
(body) maybe=aparameter
и вы можете получить доступ к этим данным в PHP, прочитав поток php://input
, например. с чем-то вроде:
if ($_SERVER['REQUEST_METHOD'] === 'PUT') {
$myEntireBody = file_get_contents('php://input'); //Be aware that the stream can only be read once
}
и запрос DELETE будет выглядеть так:
DELETE /something/index.php?maybe=aparameter
и снова вы можете построить свою логику после проверки метода:
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
// do something
}
Обратите внимание, что запрос DELETE не имеет тела, и обратите особое внимание на код состояния ответа (например, если вы получили запрос PUT и обновили этот ресурс без ошибок, вы должны вернуть статус 204 -No content- ).
person
ilpaijin
schedule
14.01.2015