domingo, 1 de febrero de 2015
Codeigniter Web Service - REST
Escribo esta página porque quiero aportar un poquito de los conocimientos que he obtenido, leyendo foros sobre Web Services.
Para que sirve
Un web service se utiliza para la comunicación de diferentes aplicaciones(que pueden estar hechas con diferentes lenguajes de programación), mediante el protocolo HTTP puerto 80 (o el que se configure).
La comunicación de estas aplicaciones se realizan mediante estructuras de datos como puede ser un xml, json, o simplemente cadenas de carácteres (strings).
Integrando con Codeigniter
Todo el mundo ha oído hablar de Phil Sturgeon y su Rest Server para Codeigniter.
Pero en muy pocos foros o blogs se habla de como configurar dicho web service para que funcione con sus REST-API-KEY, claves de acceso que van asociadas a permisos personalizables, donde se puede decidir dar paso a una petición o denegarla.
Configuración
Voy a explicar de la forma mas clara posible como realizar dicho configuración para nuestro web service.
Lo primero que debemos hacer es modificar el fichero de configuración de Rest, situado dentro de la carpeta config.
/* |-------------------------------------------------------------------------- | REST API Keys Table Name |-------------------------------------------------------------------------- | | The table name in your database that stores API Keys. | | 'keys' | */ $config['rest_keys_table'] = 'ws_keys'; /* |-------------------------------------------------------------------------- | REST Enable Keys |-------------------------------------------------------------------------- | | When set to true REST_Controller will look for a key and match it to the DB. | If no key is provided, the request will return an error. | | FALSE CREATE TABLE `ws_keys` ( `id` int(11) NOT NULL AUTO_INCREMENT, `keyAccess` varchar(40) NOT NULL, `level` int(2) NOT NULL, `ignore_limits` tinyint(1) NOT NULL DEFAULT '0', `is_private_key` tinyint(1) NOT NULL DEFAULT '0', `ip_addresses` TEXT NULL DEFAULT NULL, `date_created` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | */ $config['rest_enable_keys'] = TRUE; /* |-------------------------------------------------------------------------- | REST Table Key Column Name |-------------------------------------------------------------------------- | | If you are not using the default table schema as shown above, what is the | name of the db column that holds the api key value? | */ $config['rest_key_column'] = 'keyAccess'; /* |-------------------------------------------------------------------------- | REST Key Length |-------------------------------------------------------------------------- | | How long should created keys be? Double check this in your db schema. | | Default: 32 | Max: 40 | */ $config['rest_key_length'] = 40; /* |-------------------------------------------------------------------------- | REST API Key Variable |-------------------------------------------------------------------------- | | Which variable will provide us the API Key | | Default: X-API-KEY | */ $config['rest_key_name'] = 'X-API-KEY';
Con el ejemplo anterior estamos indicando que la tabla que contendrá las keys se llamará "ws_keys" y el campo que contiene la key se llama "keyAccess"
Esto implica que cualquier petición al web service se tendrá que enviar la clave de acceso sino devolverá un error de "Invalid Key"
Para evitar este problema, tendremos que insertar una clave en la base de datos que nos servirá para poder realizar peticiones y poder generar claves aleatorias para otros usuarios.
Otro de los campos importantes es el campo "is_private_key".
Este campo tiene el valor de "1" o "0", dependiendo de la privacidad de la clave.
Si es una clave privada, por lo tanto, está en "1", el campo "ip_addresses" debe estar informado con la IP que realiza la petición, sino dicha petición se denegará con un error de "Invalid Key".
El campo "ignore_limits" va asociado con la cantidad de peticiones que puedes realizar durante un momento determinado.
Este campo va asociado con la tabla limits, que controla la cantidad de peticiones que realiza una petición con una Key determinada hacia una url del web service.
Si supera el límite configurado devolverá una denegación de petición.
Un ejemplo de petición de un cliente hacia el web service que intente utilizar el método "PUT", para crear una key nueva sería de la siguiente forma:
$config = array('server' => 'http://192.168.1.36/usuarios/index.php/key', 'http_user' => 'admin', 'http_pass' => '1234', 'http_auth' => 'digest' //'ssl_verify_peer' => TRUE, //'ssl_cainfo' => '/certs/cert.pem' ); // Run some setup $this->rest->initialize($config); $this->rest->api_key('20a75c12ef970bd2602416294c4f8b667c7b32bd','X-API-KEY'); $tweets = $this->rest->put('index');
Donde la clave 20a75c12ef970bd2602416294c4f8b667c7b32bd es una clave introducida en la base de datos de forma manual.
Si utilizamos el método:
$this->rest->debug();
Devolverá un resultado parecido al siguiente:
Se puede personalizar la configuración de permisos y claves, utilizando configuraciones que por defecto se encuentran deshabilitadas en el web Service de serie. Todas estas configuraciones se encuentran en el fichero "Rest.php" dentro de la carpeta config.
Suscribirse a:
Enviar comentarios
(
Atom
)
Sígueme en las Redes Sociales
Donaciones
Datos personales
Entradas populares
-
En este apartado vamos a explicar como ejercutar archivos PHP a través del terminal de Ubuntu. Lo primero que tendríamos que hacer es inst...
-
En este blog voy a comentar un tema que se utilizan en casi todas las páginas web que existen, y es el tema de la paginación. La paginaci...
-
Este post trata de la integración de la librería PHPExcel en Codeigniter, aunque se podría aplicar a cualquier librería, como por ejemplo mP...
-
Ejemplo para añadir o sumar un número determinado de hora/s, minuto/s, segundo/s a una fecha en php. Con la función strtotime se puede ...
-
Este tema es uno de los temas primordiales sobre el framework Codeigniter, ya que en alguna ocación nos hemos visto obligados a recoger dato...
© Espacio Daycry - Espacio de programación 2013 . Powered by Bootstrap , Blogger templates and RWD Testing Tool
No hay comentarios :
Publicar un comentario