Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Consumir servicios REST con PHP

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.

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:

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.


Share the post

Consumir servicios REST con PHP

×

Subscribe to Vanguarsoft Developers Blog | Ing. Javier Leal -desarrollador Cpanax C.a / Microsoft Student Partners – Venezuela

Get updates delivered right to your inbox!

Thank you for your subscription

×