Создание REST API на базе MVC

271
25 октября 2017, 06:55

Здравствуйте!

Есть задача, написать REST API которое будет выполнять такие функции: получить​ ​пост​ ​по​ ​id, создать пост, изменить пост, удалить пост.

Так вот, мне немного не понятно, как в REST происходит создание, обновление и удаление. Я знаю, что есть методы GET, POST, PUT, DELETE, но мне не понятно как с ними работать в PHP.

Создание поста и обновление делается через форму? А как же вызвать метод DELETE? Как вообще url может понять, что books/id - это, скажем, получить инфу о книге, но и books/id - это удалить книгу? Где надо прописывать эти методы? пожалуйста, если не сложно, объясните с примерами.

Answer 1

Почитайте более подробно о том, что такое 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.

READ ALSO
Почему этот код работает?

Почему этот код работает?

Я хотел узнать как получить все строки таблицы поочередно в массив и нашел следующее решение:

257
Переход на новую строку

Переход на новую строку

Допустим есть файл где храниться ID переписок пользователя построчно, но я не могу использовать константу PHPEOL для перехода на новую строку...

380
Привести дату-время к понятному виду

Привести дату-время к понятному виду

Помогите расшифровать дату встречал в апи такой массив:

242