Creación de un Servidor REST con PHP
Clase 6 de 19 • Curso de API REST con PHP
Resumen
¿Cómo crear un servidor REST en PHP?
Crear un servidor REST (Representational State Transfer) en PHP te permitirá ofrecer servicios web que pueden ser consumidos por otras aplicaciones. Esto se realiza mediante el uso de peticiones y respuestas HTTP, un protocolo de texto que te brinda flexibilidad para intercambiar información en diversos formatos como JSON o XML.
¿Cómo estructurar un servidor REST básico?
La construcción de un servidor REST comienza con la capacidad de procesar peticiones HTTP. Para eso, debes crear una estructura básica que interprete los métodos HTTP principales: GET, POST, PUT y DELETE. A continuación, te muestro cómo hacerlo:
<?php
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
case 'GET':
// Lógica para método GET
break;
case 'POST':
// Lógica para método POST
break;
case 'PUT':
// Lógica para método PUT
break;
case 'DELETE':
// Lógica para método DELETE
break;
default:
// Método HTTP no permitido
http_response_code(405);
break;
}
?>
Esta estructura permite al servidor responder adecuadamente a cada método HTTP y puede ser ampliada para manejar otros métodos según tus necesidades.
¿Cuál es la importancia de los recursos en REST?
En el contexto REST, un recurso es cualquier objeto, dato o colección de información que puedes exponer a través de tu servicio. En este ejemplo, consideremos que tienes un servidor con una base de datos de libros. Los posibles recursos podrían incluir:
- Libros
- Autores
- Géneros
Para identificar estos recursos en tu servidor, puedes definir un arreglo que contenga los tipos de recursos disponibles:
$resources = ['libros', 'autores', 'generos'];
Luego, verifica que el recurso solicitado sea válido al comparar con este arreglo.
¿Cómo validar los recursos solicitados?
La validación es esencial para manejar correctamente las peticiones entrantes. Asegúrate de que el recurso solicitado por el cliente esté dentro de los recursos definidos:
$resourceRequested = $_GET['resource']; // Supuesto recurso solicitado desde la URL
if (!in_array($resourceRequested, $resources)) {
http_response_code(404);
exit('Recurso no encontrado');
}
Si el recurso solicitado no es válido, se devolverá un error 404, indicando que el recurso no fue encontrado.
¿Cómo proporcionar respuestas en formato JSON?
Una vez validado el recurso, puedes proceder a devolver una respuesta. Aquí se genera un ejemplo en que devuelves una colección de libros en formato JSON:
$libros = [
['titulo' => 'Lo que el viento se llevó', 'autor' => 'Margaret Mitchell', 'genero' => 'Ficción'],
['titulo' => 'La Ilíada', 'autor' => 'Homero', 'genero' => 'Épica'],
['titulo' => 'La Odisea', 'autor' => 'Homero', 'genero' => 'Épica']
];
if ($method === 'GET') {
header('Content-Type: application/json');
echo json_encode($libros);
}
Con esto, le informas al cliente que el contenido de la respuesta es de tipo JSON usando header()
y luego utilizas json_encode()
para convertir el arreglo PHP a JSON.
¿Cómo probar el servidor REST?
Para probar tu servidor, usa el servidor incorporado de PHP y realiza una prueba desde otra terminal. Primero, inicia el servidor:
php -S localhost:8000 -t .
Luego, realiza una petición al servidor mediante curl
:
curl http://localhost:8000?resource=libros
Esta petición debería retornar el listado de libros en formato JSON. Para un formato más legible, puedes usar jq
, una herramienta para trabajar con JSON desde la línea de comandos:
curl http://localhost:8000?resource=libros | jq
A través de este enfoque, proporcionas una forma robusta y eficiente para que las aplicaciones interactúen con tus servicios, y estableces un marco fundamental para el desarrollo de APIs REST en PHP. Con estos fundamentos, podrás expandir tus servicios web a medida que tus necesidades crezcan, y te animo a seguir explorando y desarrollando tus habilidades en esta área.