Breaking

Post Top Ad

Your Ad Spot

domingo, 10 de marzo de 2019

Servicios Web RESTful CodeIgniter

Los servicios web de transferencia de estado representativo (REST) ​​o RESTful proporcionan una manera de intercambiar datos entre aplicaciones o sistemas en Internet. El servicio web RESTful también se refiere a la API RESTful, utiliza la solicitud HTTP para obtener datos GET, PUT, POST y DELETE en todas las plataformas. En la actualidad, RESTful API es un componente esencial de la aplicación web.
Cuando la aplicación CodeIgniter requiere la comunicación con otra aplicación, se necesita la API RESTful para integrarla en CodeIgniter. Al utilizar la API RESTful en CodeIgniter , puede intercambiar datos entre diferentes aplicaciones o plataformas. Este tutorial muestra la implementación del servidor RESTful para CodeIgniter y usted aprenderá cómo crear servicios web RESTful en CodeIgniter .
Si eres principiante en CodeIgniter, primero ve a CodeIgniter del tutorial de Scratch para configurar y configurar la aplicación CodeIgniter.
Para demostrar la API REST de CodeIgniter , implementaremos las operaciones de CRUD en el servicio web de CodeIgniter . Se realizarán las siguientes tareas para crear una API REST simple en CodeIgniter.
  • Configurar la biblioteca RESTful para CodeIgniter.
  • Cree un método API para obtener la información del usuario a través de la solicitud GET.
  • Cree métodos API para agregar, editar y eliminar información del usuario a través de la solicitud POST, PUT y DELETE.
  • Interactúe con la API de CodeIgniter Rest mediante PHP cURL.
  • Prueba las llamadas HTTP con la extensión de Google Chrome Postman.
Antes de comenzar, eche un vistazo a la estructura de archivos de la API REST de CodeIgniter.
codeigniter-rest-api-files-structure-codexworld

Crear tablas de base de datos

Para almacenar la información del usuario, se debe crear una tabla en la base de datos. El siguiente SQL crea una userstabla con algunos campos básicos en la base de datos MySQL.
CREAR  TABLA ` usuarios ` (
  `id`  int ( 11 ) NOT NULL AUTO_INCREMENT,
  ` first_name`  varchar ( 100 ) compilar utf8_unicode_ci NOT NULL ,
  `last_name`  varchar ( 100 ) compilar utf8_unicode_ci NOT NULL ,
  ` email`  varchar ( 255 ) Intercalar utf8_unicode_ci NOT NULL ,
  `phone`  varchar ( 20 ) COLLATE utf8_unicode_ci NOT NULL ,
  ` created` datetimeNOT NULL ,
  `modified` datetime NOT NULL ,
  ` status` enum ( '1' , '0' ) COLLATE utf8_unicode_ci NOT NULL ,
  PRIMARY KEY ( `id` )
) MOTOR = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;
El siguiente SQL crea una keystabla para almacenar la clave de la API REST para la autenticación.
CREATE  TABLE ` teclas ` (
  `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 NULLDEFAULT '0' ,
  `ip_addresses`  texto ,
  ` date_created` datetime NOT NULL ,
  PRIMARY KEY ( `id` )
) MOTOR = InnoDB DEFAULT CHARSET = utf8;
Ahora inserte una clave de API en la keystabla, que se utilizará en la llamada a la API.
INSERT INTO  `keys` ( ` id` , `user_id` , ` key` , `level` , ` ignore_limits` , `is_private_key` , ` ip_addresses` , `date_created` ) VALUES 
( 1 , 0 , 'CODEX @ 123' , 0 , 0 , 0 , NULL , '2017-10-12 13:34:33' );

Configuración del controlador REST CodeIgniter

Utilizaremos CodeIgniter REST_Controller para crear servicios web RESTful en CodeIgniter. Siga los pasos a continuación para configurar REST Controller Library en su aplicación CodeIgniter.
  • Descargue el archivo de configuración REST y colóquelo en el application/config/directorio. 
    Abra el application/config/rest.phparchivo y configure la siguiente configuración.
    • Establecer REST nombre de usuario y contraseña de inicio de sesión.
      $ config [ 'rest_valid_logins' ] = [ 'admin'  =>  '1234' ];
    • Habilitar clave de API REST.
      $ config [ 'rest_enable_keys' ] =  TRUE ;
  • Descargue el archivo REST_Controller y colóquelo en el application/libraries/directorio.
  • Descargue el archivo de formato de clase y colóquelo en el application/libraries/directorio.
  • Descargue el archivo de idioma y colóquelo en el application/language/english/directorio.
Tenga en cuenta que: Todos los archivos de biblioteca necesarios se incluyen en nuestra aplicación de ejemplo CodeIgniter, por lo que no necesita descargar estos archivos por separado. Descargue nuestro código fuente para obtener una aplicación de servicio web RESTful CodeIgniter de muestra.

Crear modelo

Abra el application/models/directorio y cree el User.phparchivo y agregue el siguiente código para manejar los trabajos relacionados con la base de datos. 
El modelo de usuario tiene los siguientes métodos para obtener, insertar, actualizar y eliminar datos de usuario en la base de datos.
  • __construct () - Carga la biblioteca de base de datos.
  • getRows () : recupera los datos del usuario de la userstabla y devuelve una fila o varias filas.
  • Insertar () - Insertar datos de usuario en la userstabla.
  • user_put () : actualice los datos de usuario en la userstabla según la ID dada.
  • user_delete () : elimina el usuario de la userstabla en función de la ID dada.
<? php if (! defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); 

clase de  usuario  se extiende  CI_Model  { 

    función pública  __construct () { 
        padres :: __construct (); 
        
        // cargar la biblioteca de la base de datos 
        $ this -> load -> database (); 
    } 

    / * 
     * Obtener datos del usuario 
     * / 
    function  getRows ( $ id  "" ) { 
        if (! Empty ( $ id )) { 
            $ query  $ this -> db -> get_where ( 'usuarios' , array ( 'id'  =>  $ id )); 
            devuelve  $ query -> row_array (); 
        } else { 
            $ query  $ this -> db -> get ( 'usuarios' ); 
            devuelve  $ consulta -> result_array (); 
        } 
    } 
    
    / * 
     * Insertar datos de usuario 
     * / 
    insert de función pública  ( $ data  = array ()) {         si (!
array_key_exists ( 'created' $ data )) { 
            $ data [ 'created' ] =  date ( "Ymd H: i: s" ); 
        } 
        if (! array_key_exists ( 'modified' $ data )) { 
            $ data [ 'modified' ] =  date ( "Ymd H: i: s" ); 
        } 
        $ insert  $ this -> db -> insert ( 'users' $ data ); 
        si ( $ insertar ) {
            devuelve  $ this -> db -> insert_id (); 
        } else { 
            devolver  falso ; 
        } 
    } 
    
    / * 
     * Actualizar datos de usuario 
     * / 
    actualización de función pública  ( $ datos $ id ) {         si (! (Vacío ( $ datos ) &&! Vacío ( $ id )) {             si (! Array_key_exists ( 'modificado' $ datos ) ) { $ data [ 'modificado' ] =  fecha ( "Ymd H: i: s" );


                
            } 
            $ update  $ this -> db -> update ( 'usuarios' $ data , array ( 'id' => $ id )); 
            volver  $ actualizar ? verdadero : falso ; 
        } else { 
            devolver  falso ; 
        } 
    } 
    
    / * 
     * Eliminar datos de usuario 
     * / 
    función pública  delete ( $ id ) { 
        $ delete  $ this -> db -> delete ('users' , array ( 'id' => $ id )); 
        devuelve  $ borrar ? verdadero : falso ; 
    } 

} ?>

Crear controlador de API

Siempre es una buena idea agrupar todos los controladores API en una carpeta separada para una mejor usabilidad. Entonces, cree una api/carpeta en el application/controllers/directorio para colocar el controlador que se usará para la llamada a la API. 
Abra el application/controllers/api/directorio y cree el Example.phparchivo. Al principio, incluya la biblioteca del controlador REST y agregue el siguiente código. 
El controlador API de ejemplo tiene los siguientes métodos para manejar las solicitudes GET, POST, PUT y DELETE.
  • __construct () - Carga el modelo de usuario.
  • user_get () : devuelve los datos de usuario de la base de datos. Si el parámetro ID no existe, devuelve todas las filas, de lo contrario se devolverá una fila.
  • user_post () : agrega datos de usuario a la base de datos.
  • user_put () : actualiza los datos de usuario en la base de datos según la ID.
  • user_delete () : elimine al usuario de la base de datos según el ID.
<? php if (! defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); 
// incluir la biblioteca Rest Controller requiere  APPPATH  '/libraries/REST_Controller.php' ; 

clase  Ejemplo  extiende  REST_Controller  { 

    función pública  __construct () {  
        parent :: __construct (); 
        
        // cargar modelo de usuario 
        $ esto -> cargar -> modelo ( 'usuario' ); 
    } 
    
    función pública  user_get ( $ id 0 ) { 
        // devuelve todas las filas si el parámetro id no existe, 
        // de lo contrario, se devolverá una sola fila 
        $ users  $ this -> user -> getRows ( $ id ); 
        
        // compruebe si los datos del usuario existen 
        si (! vacío ( $ usuarios )) { 
            // establezca la respuesta y salga de 
            $ this -> respuesta ( $ usuarios REST_Controller :: HTTP_OK ); 
        } else { 
            // establezca la respuesta y salga 
            $ this -> response ([ 
                'status'  =>  FALSE, 
                'mensaje'  =>  'No se encontró ningún usuario.' 
            ],  REST_Controller :: HTTP_NOT_FOUND ); 
        } 
    } 
    
    public function  user_post () { 
        $ userData  = array (); 
        $ userData [ 'first_name' ] =  $ this -> post ( 'first_name' ); 
        $ userData [ 'last_name' ] =  $ this -> post ( 'last_name' ); 
        $ userData [ 'email' ] =  $ this -> post ('correo electrónico' ); 
        $ userData [ 'phone' ] =  $ this -> post ( 'phone' ); 
        if (! empty ( $ userData [ 'first_name' )) &&! empty ( $ userData [ 'last_name' ]) &&! empty ( $ userData [ 'email' ]) &&! empty ( $ userData [ 'phone' ])) { 
            // insertar datos de usuario 
            $ insert  $ this -> user -> insert ( $ userData );
            
            
            ) { 
                // configura la respuesta y sale 
                $ this -> response ([ 
                    'status'  =>  TRUE , 
                    'message'  =>  'El usuario se ha agregado correctamente.' 
                ],  REST_Controller :: HTTP_OK ); 
            } else { 
                // establezca la respuesta y salga 
                $ this -> response ( "Algunos problemas ocurrieron, inténtelo de nuevo." REST_Controller :: HTTP_BAD_REQUEST ); 
            } 
        } else else { 
            // configura la respuesta y sale 
            $ this -> response ("Proporcionar información completa del usuario para crear". REST_Controller :: HTTP_BAD_REQUEST ); 
        } 
    } 
    
    función pública  user_put () { 
        $ userData  = array (); 
        $ id  $ this -> put ( 'id' ); 
        $ userData [ 'first_name' ] =  $ this -> put ( 'first_name' ); 
        $ userData [ 'last_name' ] =  $ this -> put ( 'last_name' ); 
        $ userData ['email' ] =  $ this -> put ( 'email' ); 
        $ userData [ 'phone' ] =  $ this -> put ( 'phone' ); 
        if (! empty ( $ id ) &&! empty ( $ userData [ 'first_name' ]) &&! empty ( $ userData [ 'last_name' ]) &&! empty ( $ userData [ 'email' ]) &&! empty ( $ userData [ 'teléfono' ])) { 
            // actualizar datos de usuario 
            $ actualizar  $ esto ->( $ userData $ id ); 
            
            // verifique si los datos del usuario se actualizaron 
            si ( $ actualizar ) { 
                // configurar la respuesta y salir de 
                $ this -> response ([ 
                    'status'  =>  TRUE , 
                    'message'  =>  'El usuario se ha actualizado correctamente.' 
                ],  REST_Controller :: HTTP_OK ); 
            } else { 
                // establezca la respuesta y salga 
                $ this -> response ( "Algunos problemas ocurrieron, inténtelo de nuevo." REST_Controller :: HTTP_BAD_REQUEST );
            } 
        } else else { 
            // establezca la respuesta y salga 
            $ this -> response ( "Proporcione la información completa del usuario para actualizar." REST_Controller :: HTTP_BAD_REQUEST ); 
        } 
    } 
    
    función pública  user_delete ( $ id ) { 
        // verifica si post id no está vacía 
        si ( $ id ) { 
            // delete post 
            $ delete  $ this -> user -> delete ( $ id ); 
            
            if ( $ delete ) { 
                // establece la respuesta y sale
                $ this -> response ([ 
                    'status'  =>  TRUE , 
                    'message'  =>  'El usuario ha sido eliminado exitosamente.' 
                ],  REST_Controller :: HTTP_OK ); 
            } else { 
                // establezca la respuesta y salga 
                $ this -> response ( "Algunos problemas ocurrieron, inténtelo de nuevo." REST_Controller :: HTTP_BAD_REQUEST ); 
            } 
        } else else { 
            // establece la respuesta y sale 
            $ this -> response ([ 
                'status'  =>  FALSE ,
                'mensaje'  =>  'No se encontró ningún usuario.' 
            ],  REST_Controller :: HTTP_NOT_FOUND ); 
        } 
    }   
} 
?>

Interactuando con los servicios web RESTful de CodeIgniter

Ahora es el momento de interactuar con los servicios web RESTful de CodeIgniter. CURL es la forma más flexible y fácil de interactuar con una API REST. En el siguiente código de ejemplo, le mostraremos cómo enviar las solicitudes GET, POST, PUT y DELETE a la API REST CodeIgniter usando PHP cURL. Además, la autenticación HTTP básica y la clave de la API se utilizarán para conectarse con la API RESTful.
Recupere los datos del usuario a través de la API REST
El siguiente código realiza una solicitud GET para obtener los datos del usuario a través de los servicios web RESTful (API de ejemplo).
// URL de la API $ url  'http: // localhost / codeigniter / api / example / user /' ; 
// clave API $ apiKey  'CODEX @ 123' ; 
// Autenticación de credenciales $ username  "admin" ; $ contraseña  "1234" ; 
// crear un nuevo recurso cURL $ ch  curl_init ( $ url ); 
curl_setopt ( $ ch CURLOPT_TIMEOUT 30 ); curl_setopt ( $ ch CURLOPT_RETURNTRANSFER , 1 ); curl_setopt( $ ch CURLOPT_HTTPAUTH CURLAUTH_ANY ); curl_setopt ( $ ch CURLOPT_HTTPHEADER , array ( "X-API-KEY:"  $ apiKey )); curl_setopt ( $ ch CURLOPT_USERPWD " $ username : $ contraseña " ); 
$ resultado  curl_exec ( $ ch ); 
// cierra el recurso cURL curl_close ( $ ch );
Insertar datos de usuario a través de REST API
El siguiente código realiza una solicitud POST para insertar datos de usuario a través de servicios web RESTful (API de ejemplo).
// URL de la API $ url  'http: // localhost / codeigniter / api / example / user /' ; 
// clave API $ apiKey  'CODEX @ 123' ; 
// Autenticación de credenciales $ username  "admin" ; $ contraseña  "1234" ; 
// información del usuario $ userData  = array ( 
    'first_name'  =>  'John' , 
    'last_name'  =>  'Doe' , 
    'email'  =>  'john@example.com' , 
    'phone'  =>  '123-456- 7890 ' );

curl_init ( $ url ); 
curl_setopt ( $ ch CURLOPT_TIMEOUT 30 ); curl_setopt ( $ ch CURLOPT_RETURNTRANSFER , 1 ); curl_setopt ( $ ch CURLOPT_HTTPAUTH CURLAUTH_ANY ); curl_setopt ( $ ch CURLOPT_HTTPHEADER , array ( "X-API-KEY:"  $ apiKey )); curl_setopt ( $ ch CURLOPT_USERPWD " $ username: $ password " ); curl_setopt ( $ ch CURLOPT_POST 1 ); curl_setopt ( $ ch CURLOPT_POSTFIELDS $ userData ); 
$ result  curl_exec ( $ ch ); 
// cerrar cURL resource curl_close ( $ ch );
Actualizar los datos del usuario a través de la API REST
El siguiente código realiza una solicitud PUT para actualizar los datos del usuario a través de los servicios web RESTful (API de ejemplo).
// URL de la API $ url  'http: // localhost / codeigniter / api / example / user /' ; 
// clave API $ apiKey  'CODEX @ 123' ; 
// Autenticación de credenciales $ username  "admin" ; $ contraseña  "1234" ; 
// información del usuario $ userData  = array ( 
    'id'  =>  2 , 
    'first_name'  =>  'John2' , 
    'last_name'  =>  'Doe2' , 
    'email'  =>  'john2@example.com' , 
    'phone' 

// crear un nuevo recurso cURL $ ch  curl_init ( $ url ); 
curl_setopt ( $ ch CURLOPT_TIMEOUT 30 ); curl_setopt ( $ ch CURLOPT_RETURNTRANSFER , 1 ); curl_setopt ( $ ch CURLOPT_HTTPAUTH CURLAUTH_ANY ); curl_setopt ( $ ch CURLOPT_HTTPHEADER , array ( 'X-API-KEY:' . $ apiKey 'Content-Type: application / x-www-form-urlencoded' ));curl_setopt ( $ ch CURLOPT_USERPWD " $ username : $ contraseña " ); curl_setopt ( $ ch CURLOPT_CUSTOMREQUEST "PUT" ); curl_setopt ( $ ch CURLOPT_POSTFIELDS http_build_query ( $ userData )); 
$ resultado  curl_exec ( $ ch ); 
// cierra el recurso cURL curl_close ( $ ch );
Eliminar datos de usuario a través de REST API
El siguiente código realiza una solicitud DELETE para eliminar datos de usuario a través de servicios web RESTful (API de ejemplo).
// URL de la API $ url  'http: // localhost / codeigniter / api / example / user / 2' ; 
// clave API $ apiKey  'CODEX @ 123' ; 
// Autenticación de credenciales $ username  "admin" ; $ contraseña  "1234" ; 
// crear un nuevo recurso cURL $ ch  curl_init ( $ url ); 
curl_setopt ( $ ch CURLOPT_TIMEOUT 30 ); curl_setopt ( $ ch CURLOPT_RETURNTRANSFER , 1 ); curl_setopt( $ ch CURLOPT_HTTPAUTH CURLAUTH_ANY ); curl_setopt ( $ ch CURLOPT_HTTPHEADER , array ( "X-API-KEY:"  $ apiKey )); curl_setopt ( $ ch CURLOPT_USERPWD " $ username : $ contraseña " ); curl_setopt ( $ ch CURLOPT_CUSTOMREQUEST 'DELETE' ); 
$ resultado  curl_exec ( $ ch ); 
// cierra el recurso cURL curl_close( $ ch );

Probar llamadas HTTP con la extensión Postman

Postman Extension hace que el desarrollo de API sea más rápido, más fácil y mejor. Instala la extensión de Postman para probar la llamada a la API.
  • Obtener todos los datos de los usuarios: GET http://localhost/codeigniter/api/example/user/
    codeigniter-rest-api-tutorial-get-request-codexworld
  • Obtener datos de un solo usuario: GET http://localhost/codeigniter/api/example/user/4
    codeigniter-rest-api-tutorial-get-request-single-codexworld
  • Agregar datos de usuario en la base de datos: POST http://localhost/codeigniter/api/example/user/
    codeigniter-rest-api-tutorial-post-request-codexworld
  • Actualizar datos de usuario en la base de datos: PUT http://localhost/codeigniter/api/example/user/
    codeigniter-rest-api-tutorial-put-request-codexworld
  • Eliminar usuario de la base de datos: DELETE http://localhost/codeigniter/api/example/user/4
    codeigniter-rest-api-tutorial-delete-request-codexworld

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas