Здравствуйте!
Есть задача, написать REST API которое будет выполнять такие функции: получить пост по id, создать пост, изменить пост, удалить пост.
Так вот, мне немного не понятно, как в REST происходит создание, обновление и удаление. Я знаю, что есть методы GET, POST, PUT, DELETE, но мне не понятно как с ними работать в PHP.
Создание поста и обновление делается через форму? А как же вызвать метод DELETE? Как вообще url может понять, что books/id - это, скажем, получить инфу о книге, но и books/id - это удалить книгу? Где надо прописывать эти методы? пожалуйста, если не сложно, объясните с примерами.
Почитайте более подробно о том, что такое REST. Если очень грубо и очень кратко: каждый метод HTTP запроса здесь отвечает за конкретное действие.
Комментарий под вопросом отвечает на него, как мне кажется. Действительно, для получения метода запроса Вы можете просто обратиться к $_SERVER['REQUEST_METHOD'].
Если Вам непонятно, каким образом получить, в таком случае, данные запроса (привычный $_GET или $_POST тут уже не подойдет), то здесь все неколько сложнее, однако, примеров даже на SO полно.
Вот пример с англоязычной версии, в котором проверяется тип запроса и выполняется соответствующее действие:
public function initialize(...)
{
... code ...
$request_vars = array();
if (isset($_SERVER['REQUEST_METHOD']))
{
switch ($_SERVER['REQUEST_METHOD'])
{
case 'PUT':
if ('application/x-www-form-urlencoded' === $this->getContentType())
{
parse_str($this->getContent(), $request_vars );
}
break;
case 'DELETE':
if ('application/x-www-form-urlencoded' === $this->getContentType())
{
parse_str($this->getContent(), $request_vars );
}
break;
}
... more code ...
}
public function getContent()
{
if (null === $this->content)
{
if (0 === strlen(trim($this->content = file_get_contents('php://input'))))
{
$this->content = false;
}
}
return $this->content;
}
А вообще, существует множество готовых решений для разработки REST API.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я хотел узнать как получить все строки таблицы поочередно в массив и нашел следующее решение:
Допустим есть файл где храниться ID переписок пользователя построчно, но я не могу использовать константу PHPEOL для перехода на новую строку...