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:
urlGET http://api.loc/users/
Obtenemos un usuario por su id:
urlGET http://api.loc/user/1/
Creamos un usuario:
urlPOST http://api.loc/user/
Modificamos un usuario por su id:
urlPUT http://api.loc/user/1/
Eliminamos un usuario por su id:
urlDELETE 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:
api.loc/index.php<?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:
api.loc/index.php<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Ahora podemos escribir la implementación de la API:
api.loc/index.php<?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.