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

Por mchojrin

Ayudo a desarrolladores PHP a afinar sus habilidades técnicas y avanzar en sus carreras

5 comentarios

  1. gracias estimado ha servidor esto, pero como hago que un servidor IIS & PHP solicite autenticacion basica al consumir los webservices????

  2. Hola,
    Se tiene una aplicación comercial la cual ofrece una dll para por medio de librería y funciones realizar por ejemplo facturas y pedidos, así que hay que desarrollar una capa intermedia la cual conecte con esa dll y mi aplicación, luego quiero acceder a mi desarrollo remotamente, aquí es dónde interviene php y por eso la pregunta, para hacer esto lo más apegado a seguridad a coño desarrollar esa API entre mi aplicación y PHP qué debo utilizar?, que tipo de documentación debo buscar en la red?.

    Saludos,
    Javier

¿Te quedó alguna duda? Publica aca tu pregunta

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