- CodeIgniter, combinado con la biblioteca codeigniter-restserver, simplifica la creación de API RESTful.
- Implementar la autenticación de la clave de la API es esencial para asegurar los puntos finales de la API.
- Probar la funcionalidad de la API con herramientas como Postman es un paso crucial en el proceso de desarrollo.
Codeigniter es un framework muy conocido para el desarrollo de aplicaciones PHP. Sin embargo, en los casos en los que la aplicación necesita comunicarse entre plataformas, necesitas una API RESTful. En casi todos los casos, la API REST es un componente esencial de las aplicaciones desplegadas en cualquier alojamiento web PHP.

Qué es la API REST
REST significa Transferencia de Estado Representacional. Una API REST es un servicio web que utiliza métodos HTTP como GET, PUT, POST, DELETE para la manipulación de datos en plataformas cruzadas.
En este tutorial, demostraré cómo puedes crear una API REST en Codeigniter. Para crear la API, utilizaré codeigniter-restserver, escrito por Phil Sturgeon y respaldado actualmente por Chris Kacerguis. También utilizaré la biblioteca codeigniter-restclient.
El proceso de creación de una API REST en Codeigniter abarca los siguientes pasos:
- Instalación del framework Codeigniter en Cloudways
- Creación de bases de datos y tablas
- Configurar bibliotecas y permisos
- Configura la autenticación y la(s) clave(s) API
- Configurar llamadas HTTP (GET, PUT, POST, DELETE)
- Prueba las llamadas HTTP.
Instalación de Codeigniter en Cloudways
Primero regístrate en Cloudways para obtener una cuenta gratuita. Una vez que la cuenta esté lista, accede a tu cuenta y crea un nuevo servidor. Rellena los datos del servidor y de la aplicación y selecciona PHP Stack como aplicación. A continuación, introduce el nombre de la aplicación, del servidor y del proyecto.
Nota: Puedes alojar un número ilimitado de aplicaciones en un único servidor.
Alojamiento CodeIgniter en Servidores Cloud Gestionados
Cloudways se encarga de la gestión del servidor por ti para que puedas centrarte en crear grandes aplicaciones y mantener contentos a tus clientes.
Elige tu proveedor (Google, Amazon, Vultr, DigitalOcean), selecciona el tamaño del servidor según tus necesidades y pulsa el botón Lanzar.
Ahora que tu servidor y tu aplicación están listos, abre tu servidor haciendo clic en el nombre del servidor.

Conéctate con el nombre de usuario y la contraseña proporcionados en el área Credenciales maestras.

Ahora que estás conectado a tu servidor, ve al terminal SSH y escribe los siguientes comandos para instalar Codeigniter.
cd applications cd applicationname/public_html wget https://github.com/bcit-ci/CodeIgniter/archive/develop.zip

Una vez finalizada la descarga del archivo zip, descomprímelo utilizando los siguientes comandos.
unzip develop.zip mv CodeIgniter-develop codeigniter rm index.php rm develop.zip
En este punto, la instalación se ha completado.
Alojamiento PHP: Mejor Alojamiento Web PHP 7 y PHP 5.6
Ve a la pestaña Aplicación del panel Cloudways y selecciona tu aplicación. Pulsa el botón resaltado (ver la siguiente imagen) para acceder a la aplicación. Recuerda añadir /codeigniter a la URL y pulsa la tecla Intro.


Crear base de datos y tabla(s)
Ahora crearé una base de datos sencilla con una tabla llamada Usuario. Para crear la base de datos, ve a la pestaña Gestión de Aplicaciones e inicia el gestor de bases de datos.

Escribe el siguiente comando en el campo de comando SQL:
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;

Configurar bibliotecas y permisos
En primer lugar, descarga las librerías codeigniter-restserver y codeigniter-restclient. Extrae el contenido y, a continuación, arrastra y suelta los archivos application/libraries/Format.php y application/libraries/REST_Controller.php en los directorios de la aplicación.Recuerda añadir require_once it en la parte superior de los controladores para cargarlos en el ámbito. Además, copia el archivo rest.php de application/config en el directorio de configuración de la aplicación.
Te puede interesar: Cómo pasar datos del controlador a la vista en CodeIgniter
Ahora crea un archivo en la carpeta raíz de la aplicación y llámalo .htaccess. Pega en él el siguiente código.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Configurar autenticación y clave API
Para configurar la autenticación, crea primero las siguientes tablas en la base de datos:
CREATE TABLE `keys` ( `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, `date_created` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `logs` ( `id` int(11) NOT NULL, `uri` varchar(255) NOT NULL, `method` varchar(6) NOT NULL, `params` text, `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' ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
La tabla Claves se utilizará para almacenar la clave de la API, y la tabla Registros contendrá los registros de las peticiones recibidas por el servidor.
Ahora abre application / database.php e introduce tu nombre de host, dbname y contraseña (disponibles en los detalles de acceso a la aplicación).


El siguiente paso es la configuración de la autenticación. Para ello, abre application / autoload.php y cambia esta línea de código
$autoload['libraries'] = array( );
A esto
$autoload['libraries'] = array('database');
Ahora ve a application / rest.php y establece las siguientes entidades como se muestra
$config['rest_enable_keys'] = TRUE; $config['rest_logs_table'] = 'logs'; $config['rest_auth'] = 'basic'; $config['auth_source'] = '';
La autenticación ya está lista. El siguiente paso es la creación del modelo y las llamadas HTTP.
Configurar llamadas HTTP
Ahora crearé dos archivos.
Ve a application/controllers y crea un nuevo archivo con el nombre api.php. Pega en él el siguiente código.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require(APPPATH.'/libraries/REST_Controller.php');
class Api extends REST_Controller
{
public function __construct() {
parent::__construct();
$this->load->model('user_model');
}
public function user_get(){
$r = $this->user_model->read();
$this->response($r);
}
public function user_put(){
$id = $this->uri->segment(3);
$data = array('name' => $this->input->get('name'),
'pass' => $this->input->get('pass'),
'type' => $this->input->get('type')
);
$r = $this->user_model->update($id,$data);
$this->response($r);
}
public function user_post(){
$data = array('name' => $this->input->post('name'),
'pass' => $this->input->post('pass'),
'type' => $this->input->post('type')
);
$r = $this->user_model->insert($data);
$this->response($r);
}
public function user_delete(){
$id = $this->uri->segment(3);
$r = $this->user_model->delete($id);
$this->response($r);
}
}
A continuación, ve a aplicación/modelos y pega en él el siguiente código.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
*
*/
class User_model extends CI_Model
{
public function read(){
$query = $this->db->query("select * from `tbl_user`");
return $query->result_array();
}
public function insert($data){
$this->user_name = $data['name']; // please read the below note
$this->user_password = $data['pass'];
$this->user_type = $data['type'];
if($this->db->insert('tbl_user',$this))
{
return 'Data is inserted successfully';
}
else
{
return "Error has occured";
}
}
public function update($id,$data){
$this->user_name = $data['name']; // please read the below note
$this->user_password = $data['pass'];
$this->user_type = $data['type'];
$result = $this->db->update('tbl_user',$this,array('user_id' => $id));
if($result)
{
return "Data is updated successfully";
}
else
{
return "Error has occurred";
}
}
public function delete($id){
$result = $this->db->query("delete from `tbl_user` where user_id = $id");
if($result)
{
return "Data is deleted successfully";
}
else
{
return "Error has occurred";
}
}
}
Probar las llamadas HTTP
Para probar las llamadas HTTP de la API, utilizaré Postman.Ve a Postman, establece el método en GET , luego establece la autenticación y la clave API como se muestra a continuación:


Ahora, para probar la solicitud POST , establece la solicitud como POST y añade la autenticación y la clave API. Rellena las variables como se muestra a continuación:

A continuación, voy a probar la solicitud PUT . Pasa el id en el 3er segmento de la URL, establece la petición como PUT, establece la autenticación y la clave API y rellena los parámetros como se muestra a continuación:

Para probar la solicitud DELETE , pasa el id en el 3er segmento de la URL, establece la solicitud como DELETE, establece la autenticación y la clave API y rellena los parámetros como se muestra a continuación:

En resumen
En este tutorial, he descrito cómo configurar la autenticación para una API REST en CodeIgniter, incluyendo la creación de cuatro llamadas a la API para la manipulación de datos. La belleza de CodeIgniter reside en su enfoque simplificado para crear API. Para los desarrolladores que buscan un entorno de alojamiento optimizado para las aplicaciones CodeIgniter, las soluciones de alojamiento CodeIgniter pueden proporcionar ganancias adicionales de eficiencia. Estos proveedores pueden ofrecer configuraciones preconfiguradas o procesos de despliegue racionalizados específicamente para CodeIgniter, permitiéndote centrarte en crear tu API.
Start Growing with Cloudways Today.
Our Clients Love us because we never compromise on these
Shahzeb Ahmed
Un creativo de día (con una taza de té) y un creativo de noche. Ahmad Kamran es redactor de contenidos estacionales y Ejecutivo de Marketing Senior en Cloudways. Puedes encontrarle en su escritorio escribiendo, elaborando estrategias o jugando. Y en caso de que no puedas encontrarle aquí, estará en la montaña o junto a la orilla del río.