Простое API.
HTTP. Урок 1. Справка о методе
PUT.
Создадим
файл .htaccess
RewriteEngine
on
RewriteRule
^([^/]+)/? index.php?url=$1 [L,QSA]
А также index.php
<?php
require_once("DB.php");
//
'REQUEST_METHOD' - Какой метод был использован
для запроса страницы; к примеру 'GET',
'HEAD', 'POST', 'PUT'.
if
($_SERVER['REQUEST_METHOD'] == "GET") {
echo "GET";
}
else if ($_SERVER['REQUEST_METHOD'] == "POST") {
echo "POST";
}
else {
// http_response_code — Получает или
устанавливает код ответа HTTP
http_response_code(405);
}
?>
Протестируем
запросы.
Создадим связь
с БД в файле DB.php
<?php
class DB {
private $pdo;
public function __construct($host, $dbname,
$username, $password) {
$pdo = new
PDO('mysql:host='.$host.';dbname='.$dbname.';charset=utf8',
$username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
$this->pdo = $pdo;
}
public function query($query, $params = array())
{
$statement = $this->pdo->prepare($query);
$statement->execute($params);
if(explode(' ', $query)[0] == 'SELECT') {
$data = $statement->fetchAll();
return $data;
}
}
}
?>
Идем в index.php
Распечатаем
запрос.
<?php
require_once("DB.php");
$db =
new DB("127.0.0.1", "SocialNetwork", "root",
"");
//
'REQUEST_METHOD' - Какой метод был использован
для запроса страницы; к примеру 'GET',
'HEAD', 'POST', 'PUT'.
if
($_SERVER['REQUEST_METHOD'] == "GET") {
print_r($db->query("SELECT * FROM users"));
}
else if ($_SERVER['REQUEST_METHOD'] == "POST") {
echo "POST";
}
else {
// http_response_code — Получает или устанавливает
код ответа HTTP
http_response_code(405);
}
?>
Сконвертируем
запрос в объект json.
<?php
require_once("DB.php");
$db =
new DB("127.0.0.1", "SocialNetwork", "root",
"");
//
'REQUEST_METHOD' - Какой метод был использован
для запроса страницы; к примеру 'GET',
'HEAD', 'POST', 'PUT'.
if
($_SERVER['REQUEST_METHOD'] == "GET") {
echo json_encode(($db->query("SELECT * FROM users")));
http_response_code(200);
}
else if ($_SERVER['REQUEST_METHOD'] == "POST") {
echo "POST";
}
else {
// http_response_code — Получает или устанавливает
код ответа HTTP
http_response_code(405);
}
?>
МЕТОД PUT.
СПАВКА.
Описание
HTTP метода PUT. Пример использования HTTP
метода PUT
HTTP
метод PUT используется для загрузки
содержимого запроса на указанный в этом
же запросе URI. То есть HTTP запрос с методом
PUT уже заранее содержат в теле сообщения
какой-то объект, который должен быть
сохранен на сервере по адресу, который
указан в URI. Но если по данному URI уже
есть какие-либо данные, то данные,
поступающие из запроса с методом PUT,
считаются модификацией. Если запрос с
HTTP методом PUT обращается к не существующему
URI, то сервер создает новый URI и сообщает
об этом клиенту. Если ресурс успешно
создан по средствам метода PUT, то сервер
возвращает ответ с кодом состояния 201,
если ресурс успешно модифицирован, то
сервер вернет код 200, либо 204. Если по
каким-либо причинам серверу не удается
создать ресурс, то в ответ клиенту он
высылает описание проблемы, возможно,
с кодом ошибки клиента или кодом ошибки
сервера.
Ответы
сервера на HTTP метод PUT не кэшируются.
Стоит обратить внимание, что метод POST
и метод PUT выполняют совершенно разные
операции. Метод POST обращается к ресурсу
(странице или коду), которая содержит
механизмы обработки сообщения метода
POST, а вот метод PUT создает какой-то объект
по URI, указанному в сообщение с HTTP методом
PUT.
Источник
и другие метода по адресу:
http://zametkinapolyah.ru/servera-i-protokoly/tema-7-opredelenie-metodov-http-http-method-definitions-metody-http-zaprosov.html#_HTTP_PUT__HTTP_PUT
PUT ДЛЯ
ОБНОВЛЕНИЯ ЗАПИСИ.
Разница
между PUT и POST - это вопрос семантики. Коль
скоро для операций используются разные
глаголы, то и смысл у них должен быть
разным.
Представьте,
что ваш сервис оперирует понятиями
блокнот (notebook) и запись (post). Один блокнот
может содержать множество записей.
Для
добавления новой записи в блокнот c
идентификатором id вы будете использовать
метод POST с URL mydomain/notebooks/id/. Ваш сервис,
ориентируясь на метод POST, сам присвоит
нужный идентификатор записи, добавит
ее в блокнот и вернет вам URL созданной
записи (для доступа к записи по GET или
для удаления по DELETE). При этом хорошо бы
вернуть клиенту URL созданной записи.
Допустим,
запись с идентификатором post-id уже создана
и доступна по URL mydomain/notebooks/id/posts/post-id. Но
клиент (владелец записи) исправил в ней
ошибку и хочет перезаписать ее. Для
этого он использует метод PUT с URL
mydomain/notebooks/id/posts/post-id и передает обновленную
запись в теле запроса. Ваш сервис,
ориентируясь на метод PUT удаляет старую
запись и записывает новую, при этом она
доступна по тому же URL.
Конечно,
никто не мешает вам всегда использовать
метод POST (например HTML 4 позволял
использовать только методы GET и POST). Но
все же стоит придерживаться рекомендаций
в целях единообразной трактовки методов
всеми разработчиками.
UPD:
Вспомнил еще кое-что. Рекомендуется
использоваться метод POST для создания
подчиненного ресурса (дочернего по
отношению к другому ресурсу; пример
блокнота и записи как раз очень подходит).
Источник:
https://ru.stackoverflow.com/questions/193978/%d0%a0%d0%b0%d0%b7%d0%bd%d0%b8%d1%86%d0%b0-%d0%bc%d0%b5%d0%b6%d0%b4%d1%83-put-%d0%b8-post/193988#193988
Комментариев нет:
Отправить комментарий