REST API em PHP
Existem abordagens especiais que padronizam APIs para a conveniência geral tanto dos desenvolvedores da API quanto de seus usuários.
Uma dessas abordagens é a REST API. Sua base está na ideia de que para operações CRUD é necessário utilizar vários métodos do protocolo HTTP.
Para obter dados - o método GET, para criar dados - o método POST, para alterar dados - o método PUT, para excluir dados - o método DELETE.
Como exemplo, vamos considerar uma API que manipula usuários. Vamos ver como ficariam as URLs para várias ações.
Obtendo todos os usuários:
GET http://api.loc/users/
Obtendo um usuário pelo seu id:
GET http://api.loc/user/1/
Criando um usuário:
POST http://api.loc/user/
Alterando um usuário pelo seu id:
PUT http://api.loc/user/1/
Excluindo um usuário pelo seu id:
DELETE http://api.loc/user/1/
Vamos ver como uma REST API é implementada em PHP. Existe um certo problema aqui. O fato é que tanto o PHP quanto o CURL suportam apenas os métodos GET e POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // apenas GET e POST
?>
Portanto, para implementar uma REST API, teremos que
recorrer a um truque. Sua essência está no fato
de que, na realidade, os dados serão transmitidos
apenas pelos métodos GET e POST, mas nós
iremos simular o trabalho de outros métodos
usando um cabeçalho HTTP personalizado.
Vamos chamá-lo, por exemplo, de HTTP-X-HTTP-METHOD.
Assim, poderemos obter o conteúdo deste cabeçalho da seguinte forma:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Agora podemos escrever a implementação da API:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Implemente uma REST API para produtos de uma loja virtual.
Teste o funcionamento da API implementada usando a biblioteca CURL.