Vanguarsoft Developers blog

Ing. Javier Leal – CEO VanguarSoft – VENEZUELA

Consumir servicios REST con PHP

Deja un comentario

Un gran amigo me pidió hoy un favor de apoyar a un familiar a salir de una traba al momento de consumir un servicio REST desde PHP, indicándome estaba usando curl, inmediatamente en investigaciones me di cuenta de la dificultad que han tenido muchos desarrolladores para consumir servicios con curl.

Ya en otras ocasiones había consumido servicios REST con php pero no recordé haber usado curl y me pareció muy fácil y sencillo de utilizarlo pero antes de realizar cualquier ejemplo es muy importante entender lo que hace el servicio que estamos usando para realmente entender si nos esta funcionando o no.

Antes debemos entender que al usar un servicio REST estos emiten unos códigos que indican un mensaje satisfactorio o de error sobre tu invocación, estos códigos son los siguientes:

Tabla 1. Códigos de respuesta
Código de respuesta Mensaje Descripción
200 OK La operación ha finalizado correctamente.
201 Created El recurso se ha creado correctamente.
301 Moved Permanently Se conoce el recurso al que se hace referencia pero ha cambiado su URI.
400 Bad Request Error por parte del cliente genérico. Los datos de solicitud no son válidos.
403 Forbidden La solicitud se ha formado correctamente, pero el servidor no puede llevar a cabo la operación.
404 Not Found La URI especificada es desconocida para el servicio REST.
405 Method Not Allowed El recurso al que se hace referencia no soporta el método HTTP utilizado.
406 Not Acceptable El cliente ha especificado un tipo aceptado no soportado.
409 Conflict La solicitud ha intentado establecer el recurso en un estado incoherente o imposible.
415 Unsupported Media Type El servidor no reconoce el tipo de soporte especificado.
423 Locked No se ha podido llevar a cabo la operación solicitada puesto que el recurso está bloqueado.
500 Internal Server Error Se ha producido un error interno.

Al entender esto sabrás que al tener una respuesta 200 o 201 según sea el caso estas haciendo las cosas bien, también tenemos forma de probar esto sin necesidad de lanzar ninguna linea de código de esta manera nos aseguramos de la funcionalidad del servicio antes de comenzar a realizar código, hay muchos software para esto como POSTMANT o TELERIK FIDDLER el ultimo es mi preferido lo puede descargar de manera gratuita en esta URL: http://www.telerik.com/fiddler.

TEST REST

Realice una prueba del servicio que quiero usar y tengo una respuesta correcta por lo tanto puedo comenzar a realizar mi desarrollo PHP como muchos otros lenguajes tienen librerías desarrolladas por terceros que facilitan muchísimo la vida acá tenemos una que encontré en GIT HUB llamada php-restclient que se ve bastante fácil de utilizar y tenemos otro sitio web especializado en lo que necesitamos http://phphttpclient.com/.

En este caso utilizaremos php-restclient, procedemos a descargarlo de la URL (https://github.com/tcdent/php-restclient) al descargarla vemos los siguientes archivos:

restfiles

Lo primero que debemos hacer es crear una nueva carpeta en nuestro servidor local y copiar estos archivos y creamos uno llamado index.php para nuestra prueba, la duda realizada por un amigo fue como enviar un POST con los datos y esta seria la respuesta usando esta interesante API.

Utilizando POST

require ‘restclient.php’;
$TEST_SERVER_URL = “Your Server URL”;

$api = new RestClient;
$result = $api->post($TEST_SERVER_URL, “{\”foo\”:\”bar\”}”,
array(‘Content-Type’ => ‘application/json’));
$response_json = $result->decode_response();

$this->assertEquals(‘application/json’,
$response_json->headers->{“Content-Type”});
$this->assertEquals(‘POST’,
$response_json->SERVER->REQUEST_METHOD);
$this->assertEquals(“{\”foo\”:\”bar\”}”,
$response_json->body);

Ya es muy típico utilizar JSON en estos servicios, espero esto le sea de gran ayuda y a muchos, para terminar no solo en estos servicio se generan POST si no también GET, PUT, DELETE.

Utilizando GET

$api = new RestClient;
$result = $api->get($TEST_SERVER_URL, [
‘foo’ => ‘ bar’, ‘baz’ => 1, ‘bat[]’ => [‘foo’, ‘bar’]
]);
$response_json = $result->decode_response();
$this->assertEquals(‘GET’,
$response_json->SERVER->REQUEST_METHOD);
$this->assertEquals(“foo=+bar&baz=1&bat%5B%5D=foo&bat%5B%5D=bar”,
$response_json->SERVER->QUERY_STRING);
$this->assertEquals(“”,
$response_json->body);

Utilizando PUT

$api = new RestClient;
$result = $api->put($TEST_SERVER_URL, array(
‘foo’ => ‘ bar’, ‘baz’ => 1));
$response_json = $result->decode_response();
$this->assertEquals(‘PUT’,
$response_json->SERVER->REQUEST_METHOD);
$this->assertEquals(“foo=+bar&baz=1”,
$response_json->body);

Utilizando DELETE

$api = new RestClient;
$result = $api->delete($TEST_SERVER_URL, array(
‘foo’ => ‘ bar’, ‘baz’ => 1));
$response_json = $result->decode_response();
$this->assertEquals(‘DELETE’,
$response_json->SERVER->REQUEST_METHOD);
$this->assertEquals(“foo=+bar&baz=1”,
$response_json->body);

Hasta la próxima espero les sea de mucha utilidad.

Anuncios

Autor: Ing. Javier J. Leal H.

Coordinador de Requerimientos en Traetelo.com, Trainer en Lourted, Amantes de nuevas Tecnologías Desarrollador es .NET, Windows 10, Influenciador y Orador en Actividades Tecnológicas Microsoft.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s