REST API en PHP
Existen enfoques especiales, que estandarizan las API para la comodidad general tanto de los desarrolladores de la API, como de sus usuarios.
Uno de estos enfoques es REST API. Su idea fundamental es que para las operaciones CRUD es necesario utilizar varios métodos del protocolo HTTP.
Para obtener datos - el método GET, para crear datos - el método POST, para modificar datos - el método PUT, para eliminar datos - el método DELETE.
Como ejemplo, consideremos una API que manipula usuarios. Veamos cómo se verían las URL para diferentes acciones.
Obtenemos todos los usuarios:
GET http://api.loc/users/
Obtenemos un usuario por su id:
GET http://api.loc/user/1/
Creamos un usuario:
POST http://api.loc/user/
Modificamos un usuario por su id:
PUT http://api.loc/user/1/
Eliminamos un usuario por su id:
DELETE http://api.loc/user/1/
Veamos cómo se implementa REST API en PHP. Aquí hay un pequeño problema. El caso es que tanto PHP como CURL admiten solo los métodos GET y POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // solo GET y POST
?>
Por lo tanto, para implementar REST API tendremos
que usar un truco. Su esencia consiste en que
en realidad los datos se transmitirán
solo mediante los métodos GET y POST, pero nosotros
simularemos el trabajo de otros métodos
utilizando un encabezado HTTP personalizado.
Lo llamaremos, por ejemplo, HTTP-X-HTTP-METHOD.
Entonces podremos obtener el contenido de este encabezado de la siguiente manera:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Ahora podemos escribir la implementación de la API:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Implemente una REST API para productos de una tienda en línea.
Verifique el funcionamiento de la API implementada utilizando la biblioteca CURL.