API Rest con PHP

Uso de API Rest con PHP




1. Para comenzar con la creación del API en PHP se tiene que descargar los siguientes recursos:

- Codeigniter:
https://codeigniter.com/


2. Descomprimir Codeigniter

3. Copiar los siguientes archivos de codeigniter-restserver a las siguientes carpetas de 
codeigniter (ambas carpetas tiene la misma estructura de archivos).

application / libraries / Format.php
application / libraries / REST_Controller.php
application / config / rest.php
application / language / * copiar todos los archivos de lenguajes

4. Ir a la carpeta raíz de codeigniter y crear el archivo .htaccess con el siguiente código 

1
2
3
4
5
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule^(.*)$index.php/$1 [L]  

5. Crear las siguientes tablas en la BDD MySQL


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
create database servidor_rest; 

Use servidor_rest;

CREATE TABLE `tbl_user` (
`user_id` int(11) NOT NULL,
`user_name` varchar(40) NOT NULL,
`user_password` varchar(40) NOT NULL,
`user_type` varchar(15) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `keys` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`key` 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;

CREATE TABLE `logs` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`uri` VARCHAR(255) NOT NULL,
`method` VARCHAR(6) NOT NULL,
`params` TEXT DEFAULT NULL,
`api_key` VARCHAR(40) NOT NULL,
`ip_address` VARCHAR(45) NOT NULL,
`time` INT(11) NOT NULL,
`rtime` FLOAT DEFAULT NULL,
`authorized` VARCHAR(1) NOT NULL,
`response_code` smallint(3) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

Tabla tbl_user: 
Es una tabla de prueba para realizar las operaciones GET, POST, PUT, DELETE.

Tabla keys:

Tabla en el cual se almacenará las claves para el acceso a los servicios. Estas claves pueden ser legibles o codificadas empleando un software generador de texto cifrado. (Un cliente debe especificar esta clave – ver más adelante)

Tabla logs: 
Para almacenar las peticiones a los servicios REST.

6. Ir a application/config/database.php para configurar la conexión a la base de datos.

1
2
3
4
5
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'servidor_rest';
7. Ir a application/config/autoload.php
$autoload['libraries'] = array('database');


8. Ir a application/config/rest.php, para configurar la seguridad de la aplicación (en este 
caso de tipo BASIC – el nombre de usuario y contraseña se encuentra en el mismo archivo)

$config['rest_enable_keys'] = TRUE; $config['rest_logs_table'] = 'logs'; $config['rest_auth'] = 'basic';//no es obligatorio $config['auth_source'] = ''; $config['rest_valid_logins'] = ['admin' => '1234'];

9. Ir a application/controller y crear el archive Api.php



10. Ir a application/model y crear el archivo User_model.php




Y mediante un cliente REST probamos el resultado (Por ejemplo: Postman)
Especificar la URL y en Authorization seleccionar TYPE: Basic Auth (Únicamente si se configuró la aplicación para este tipo de autenticación que no es obligatorio, pero es recomendable por seguridad) y colocar las credenciales del paso 8.

En la pestaña HEADERS, en X-API-KEY, colocar el código legible o encriptado que se especificó en la tabla keys del paso 5. (Es independiente del tipo de Authorization especificado en el paso anterior)


Para el método POST incluir los parámetros necesarios


Se mostrara los datos que están en la base de datos en formato JSON así



Esto ha sido una pequeña explicación sobre el el API REST

Comentarios

Entradas populares de este blog

Introducción a la metodología RAD

Sistema Clinico con PhpMaker

Lenguaje de Programación Avanzada