Un WebService no es, en escencia, muy diferente de otro tipo de aplicación web, sin embargo, existen ciertas particularidades que lo hacen ligeramente más dificultoso a la hora de afinar los detalles.
Por qué es complejo debuggear un WebService
La primera fuente de complejidad reside en el hecho de que un servicio web no está pensado para ser accedido a través de un navegador web (A diferencia de una aplicación común).
Esto implica que será necesario contar con algún mecanismo que simule un consumidor (El cual, cuando esté implementado el servicio, será otra aplicación).
Cómo simular una petición a un WebService
Una herramienta muy útil para esto es cURL.
A través de cURL podemos generar peticiones HTTP tan complejas como se requiera y, de ese modo, simular una interacción real.
Por ejemplo:
curl -H 'Api-Key: 12345abcd' -d '{ "param1": "valor1", "param2": "valor2" }' -X 'PUT' http://localhost:8000/ws
Estaremos enviando el texto json { "param1": "valor1", "param2": "valor2" }
a través del método PUT
a nuestro servicio, el cual estará escuchando en el puerto 8000 de nuestra computadora.
A su vez, esta petición estará precedida por el encabezado 'Api-Key: 12345abcd'
No está mal, ¿cierto? Claro que para usarla requieres:
- Tenerla instalada (Ningún problema si usas Linux o Mac)
- Tener algo de familiaridad con la consola
Existen otras herramientas gráficas para lograr el mismo resultado como PostMan o AdvancedRestClient o incluso alguna incorporada a los IDE.
Por ejemplo, en phpStorm disponemos de un cliente HTTP incorporado:
Utilizando una de estas herramientas es sencillo enviar pedidos a nuestro servidor como lo haría un cliente real.
Cómo debugear un pedido HTTP
Claro que una vez que recibimos el pedido empieza el verdadero trabajo de debugging.
De lo que se trata, como siempre, es de comprender por qué nuestra aplicación (En este caso nuestro WebService) no está respondiendo como debería.
Para ello es fundamental conocer qué sucede en cada momento y qué contenido tienen las variables a medida que el servidor genera la respuesta.
PHP nos ofrece varias posibilidades (funciones como var_dump, echo o similares) pero estas tienen un problema: no son inocuas. Es decir, el resultado que obtendremos no será el mismo que si no estuvieran allí.
Otro modo algo menos intrusivo es utilizar la función error_log.
Mediante esta función podremos dejar un registro de qué sucedía en el servidor mientras se procesaba la petición (incluyendo el valor que tenían las variables).
Esto puede funcionar aunque no es muy eficiente que digamos 😉
¿Entonces qué podemos hacer?
Lo ideal es utilizar una herramienta especial para debugging: un debugger (Qué sorpresa, ¿no?).
En el mundo de PHP existen varias opciones, la más popular es xDebug.
Si tenés dudas respecto de cómo usarla te recomiendo este artículo (o este video si lo preferís).
Así que ahora no quedan excusas para seguir sufriendo para crear tus propios WebServices 🙂
- Cómo enviarencabezados SOAP desde PHP - 09/12/2024
- Por qué PHP 8 no satisface el requisito ^7.3 de composer - 09/12/2024
- Cómo usar PHPUnit - 03/12/2024