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:
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.
This post first appeared on Vanguarsoft Developers Blog | Ing. Javier Leal -Desarrollador CPANAX C.A / Microsoft Student Partners – VENEZUELA, please read the originial post: here