Cómo exponer un WebService REST con PHP

Inicio / Cómo hacer para... / Cómo exponer un WebService REST con PHP

¿Qué es un WebService?

Ya en el artículo sobre cliente REST di una pequeña definición de un WebService, por si no lo leíste te lo cuento:

Un WebService es una pequeña aplicación web diseñada para interactuar con otras aplicaciones (en lugar de hacerlo con personas).

Las dos aplicaciones que se comunican toman el rol de:

  1. Servidor: quien expone el servicio
  2. Cliente: quien lo consume

¿Qué es REST?

REST es un protocolo de intercambio de información basado en HTTP.

¿Cómo se implementa en PHP?

Los servicios web basados en REST suelen ser mucho más fáciles de crear (y consumir) que los basados en SOAP.

De hecho, cualquier aplicación PHP que hayas hecho podría ser un WebService REST! (Bueno… tal vez no uno muy útil, pero eso es otro tema :)).

Te muestro un ejemplo super simple:

<?php

echo json_encode( [ 'Hola' ] );

No está mal, ¿cierto?

En este caso lo que vemos es una aplicación que, al ser invocada usando curl http://localhost:8080/rest_server.php (Asumiendo que está montada sobre el servidor local) nos dará esta salida:

["Hola"]

El cliente que haya realizado dicha invocación deberá saber qué tipo de contenido le estamos enviando (¡y actuar en consecuencia!).

Podés probarlo iniciando el servidor de esta forma:

php -S localhost:8080 &

(El & para que el proceso se ejecute en background y puedas seguir).

En caso de que se hubiese producido un error (Por ejemplo, que el recurso buscado no se encontrara disponible), deberíamos usar la función http_response_code para enviar un aviso al cliente:

http_response_code( 404 );

Por último, una buena práctica es también hacer explícito el tipo de contenido que vamos a enviar al cliente:

header('Content-type: application/json');

De esta forma el cliente tiene algo más de información y puede tomar mejores decisiones.

En definitiva, si podés elegir, te recomiendo usar siempre servicios web basados en REST. Otro consejo es que tengas a mano los códigos de error HTTP (No es necesario saberlos todos de memoria, pero ayuda :)).

¿Qué ejemplos se te ocurren ahora que sabés armar servicios REST?

mchojrin

Director Académico y Docente at Leeway Academy
Hola! Soy Mauro Chojrin, estudié la Lic. en Ciencias de la Computación en la Universidad de Buenos Aires.

Me desempeño como docente de programación desde el año 1997.

Pasé por diferentes instituciones (Escuela Técnica ORT, Digital House, EducacionIT, ITMaster, Escuela DaVinci entre otros).

Actualmente coordino los cursos dictados en Leeway Academy y desarrollo sistemas usando PHP y framework Symfony

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.