Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Proyectos / Crea un servicio web REST con PHP y MYSQL

Crea un servicio web REST con PHP y MYSQL

Autor jc mouse jueves, febrero 18, 2016

Servicio Web

Un servicio web (en inglés, Web Service o Web services) es una tecnología que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet. La interoperabilidad se consigue mediante la adopción de estándares abiertos.

Entre los estandares empleados en servicios web tenemos a REST

¿Que es REST?

REST o Transferencia de Estado Representacional (Representational State Transfer) es una arquitectura de desarrollo web que se apoya en el estándar HTTP para obtener datos o indicar la ejecución de operaciones sobre los datos. Para el intercambio de información se usa XML o JSON este ultimo más utilizado actualmente.

restapiphp

En este tutorial construiremos un REST Api empleando el lenguaje PHP de lado del servidor, empleando las operaciones GET, POST, PUT y DELETE equiparables a las operaciones CRUD de base de datos (Crear, leer, actualizar y borrar) el intercambio de datos e realizar mediante JSON (JavaScript Object Notation) la base de datos sera MySQL.

¿Que necesitamos?

  • IDE Netbeans 8.x
  • Servidor web (XAMPP, Appserv, etc) Nosotros usaremos XAMPP
  • Insomnia REST Client
  • Navegador Google Chrome

Conocimientos necesarios sobre PHP, SQL y JSON

Base de Datos

La base de datos que usaremos en este tutorial se llama “dbTest” y cuenta solo con una tabla “people” y es la siguiente:

--
-- Estructura de tabla para la tabla people
--

CREATE TABLE people (
  id int(10) NOT NULL,
  name varchar(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO people (id, name) VALUES
(1, 'Leandro Gado'),
(2, 'Aitor Tilla');

--
-- Indices de la tabla people
--
ALTER TABLE people
  ADD PRIMARY KEY (id);

--
-- AUTO_INCREMENT de la tabla people
--
ALTER TABLE people
  MODIFY id int(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

Crea una base de datos y restaura el anterior código SQL

people_table

Insomnia REST Client

Insomnia es una aplicación que se instala como complemento en el navegador Google Chrome, Insomnia te permite consumir los servicios de un Api REST de una manera sencilla y cómoda gracias a su interfaz gráfica.

Descarga e instala este complemento en Google Chrome. A medida que avancemos con el tutorial, se hará uso de esta aplicación para testear el progreso del REST Api.

PROYECTO APIREST

Paso 1. El proyecto en Netbeans

Clic en menú Archivo Proyecto nuevo… en categorias seleccionar PHP y en proyecto PHP Application, presiona el botón Siguiente para continuar.

En la siguiente ventana, indicaremos el nombre del proyecto que es “SampleWS“, la ruta donde salvar los archivos “D:\xampp\htdocs\SampleWS“, la versión de PHP 5.6 y la codificación de los archivos “UTF-8“. presionamos “siguiente“.

ws

En la ventana de “Run Configuratión” dejaremos el valor que nos da por defecto la Project URLhttp://localhost/SampleWS/“, con esta URL es que podremos acceder al servicio web.

run

Las siguientes opciones “PHP Frameworks” y “Composer” no son necesarias para este proyecto, así que presionamos directamente en “terminar” para crear el proyecto.

sample

Paso 2. Clases

Clic derecho sobre la carpeta “sources files” → Nuevo  PHP Class... en nombre de archivo escribimos “PeopleAPI” y presionamos Terminar. Repetimos el paso anterior pero esta vez escribimos “PeopleDB“. Estas serán las dos clases que conformaran el Servicio Web.

Paso 3. .HTACCESS

Un fichero .htaccess (hypertext access) es un fichero que permite definir diferentes directivas de configuración para cada directorio (con sus respectivos subdirectorios) sin necesidad de editar el archivo de configuración principal de Apache. Entre sus muchos usos el que nos interesa es el de la creación de URL amigables que nos permita implementar las diferentes acciones CRUD (Create, Read, Update and Delete) siguiendo las buenas practicas en el desarrollo de APIREST.

  • Mantener una estructura lógica en las URL
  • Usar sustantivos NO verbos

Para este tutorial, las URL que emplearemos son los siguientes:

  • GET /peoples → recuperara una lista de personas.
  • GET /peoples/1 → recupera la información de una persona en especifico.
  • POST /peoples → Crea una nueva persona
  • PUT /peoples/1 → Actualiza el registro con el ID 1
  • DELETE /peoples/1 → Elimina el registro con ID 1

Un ejemplo de lo que NO se debe hacer:

  • POST /personas/agregar <<NO usar verbos>>
  • GET /personas/sillas/crustaceos <<wtf>>

Para crear un archivo .htaccess desde netbeans clic derecho en la carpeta raíz del proyecto “Sources Files” → Nuevo Otro... en la ventana que aparece buscamos la categoría “otras” y en “Tipo de Archivos” seleccionamos “Archivo vació” y presionamos siguiente. En nombre de archivo escribimos “.htaccessy presionamos terminar para crear el archivo.

Nuestro proyecto hasta este punto debe lucir de la siguiente forma

api php

Pega en el archivo .htaccess lo siguiente:

RewriteEngine On
RewriteRule ^([a-zA-Z_-]*)$ index.php?action=$1
RewriteRule ^([a-zA-Z_-]*)/([0-9]+) index.php?action=$1&id=$2 [L,QSA]

Con este par de reglas nos aseguramos de que las solicitudes al servidor sean de la forma /accion y /accion/idnumerico

Paso 4. Código para el APIREST

4.1 Comenzando con el código php

Lo primero que haremos sera crear una estructura que nos permitirá según la solicitud del usuario realizar las diferentes acciones soportadas por el APIREST

Abre el archivo PeopleAPI y pega el siguiente código:

class PeopleAPI {    
    public function API(){
        header('Content-Type: application/JSON');                
        $method = $_SERVER['REQUEST_METHOD'];
        switch ($method) {
        case 'GET'://consulta
            echo 'GET';
            break;     
        case 'POST'://inserta
            echo 'POST';
            break;                
        case 'PUT'://actualiza
            echo 'PUT';
            break;      
        case 'DELETE'://elimina
            echo 'DELETE';
            break;
        default://metodo NO soportado
            echo 'METODO NO SOPORTADO';
            break;
        }
    }
    
}//end class

Abre el archivo index.php y reemplaza su contenido por:

<?php
    require_once "PeopleAPI.php";    
    $peopleAPI = new PeopleAPI();
    $peopleAPI->API();
?>

4.2 Insomnia

Si ejecutamos el proyecto desde un navegador web, solo podremos ver que se imprime un GET en pantalla, si quisiéramos llamar a POST, PUT y DELETE tendríamos que escribir código php, pero para eso es que instalamos Insomnia REST Client.

Inicia Insomnia desde el menú de aplicaciones de Google Chrome, a continuación presiona el boton “create a request” y escribe en Request GroupSample API” y en Request Nameobtener personas” y presiona create

insomnia

request

Tenemos que escribir 4 solicitudes más (request) , clic en el triangulo a lado del nombre de insomnia → Create Request, aparece el mismo recuadro anterior, y en esta ocasión escribe “persona por ID“.

new request

Repite el paso anterior para crear nuevas solicitudes y escribe en Request Namenueva persona“, “actualizar registro” y “eliminar registro“, te debe quedar algo así:

chrome insomnia

4.3 Primer test API

Se puede mandar una solicitud con Insomnia en unos cuantos pasos:

1) Selecciona la solicitud

2) Seleccionar el verbo

3) Escribir la URL del servicio web

4) Si la solicitud requiere de información JSON, parámetros, autenticación o encabezados van en este espacio (lo vemos con más detalle mas adelante)

5) Para enviar la solicitud se presiona SEND

6) La respuesta del servidor aparecerá en este sector

[tutorial_insomnia.gif]

Para cada una de las solicitudes que creamos, la configuración es la siguiente:

  • obtener personas : GET : http://localhost/SampleWS/peoples
  • persona por ID : GET : http://localhost/SampleWS/peoples/1
  • nueva persona : POST: http://localhost/SampleWS/peoples
  • actualizar registro : PUT : http://localhost/SampleWS/peoples/1
  • eliminar registro : DELETE : http://localhost/SampleWS/peoples/1

Ve probando cada una de ellas, como en estos momentos no tenemos nada en nuestro api pues solo obtendremos como respuesta una cadena de texto que definimos en el código más arriba, por ejemplo para “nueva persona” tendremos:

test rest api

Dejaremos las cosas hasta aquí para no hacer muy largo el post, en la segunda parte terminaremos de construir el REST Api.

Descargar archivos

Segunda Parte: Crea un servicio web REST con PHP y MYSQL

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Consultas con parámetros en Access y Java

Consultas con parámetros en Access y Java

Tenemos un archivo de base de datos Access *.MDB y queremos realizar una consulta con parámetros de búsqueda utilizando...

Facturación electrónica: El Código de Control

Facturación electrónica: El Código de Control

¿Que es la facturación electrónica? Una factura es un documento que sirve para describir el costo de los servicios y des...

Recortar imagen

Recortar imagen

En esta oportunidad dejo a considerancion un codigo realizado en Java/Netbeans para recortar una imagen visualmente Vide...

Generador de números aleatorios UNIX

Generador de números aleatorios UNIX

El Método Congruencial Lineal Mixto es el más utilizado en simulación en computadoras digitales y esta basado en una rel...

Creación de GUI con Matlab GUIDE

Creación de GUI con Matlab GUIDE

En este videotutorial se vera la creación de Interfaces Gráficas de Usuario (GUI) utilizando MatLab GUIDE herramienta vi...

Ajustar imagen de fondo a diferentes resoluciones

Ajustar imagen de fondo a diferentes resoluciones

Si diseñamos paginas web, nos habremos topado con el problema de colocar una imagen de fondo y que este se adapte a toda...

5 comentarios en “Crea un servicio web REST con PHP y MYSQL”

  1. Miguel dice:

    Hola.
    Estoy siguiendo este tutorial, pero me he perdido en la parte de las url amigables.

    Ya generé mi archivo .htacces y cuando quiero hacer el test con Insomnia, al darle send me dice que hay un error y me muestra No se ha localizado la URL solicitada en este servidor.
    Tengo la duda de donde crear las urls:
    http://localhost/SampleWS/peoples
    http://localhost/SampleWS/peoples/1 etc…
    O mejor aún que deben contener?

    Por favor tu ayuda…

    1. Miguel dice:

      Hola, ya resolví el problema:

      No era otra cosa que estaba nombrando a mi archivo como “.htacces”
      Y debía llamarse “.htaccess” con doble ss.

      Pequeño detalle 🙂

      Saludos

  2. Francisco Jose Rodriguez Sotelo dice:

    Hola:

    El paso de las URL Amigables no funciona, me manda el error 404.

  3. Edgard dice:

    Me muestra el siguiente error:
    SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

    1. Mouse dice:

      existe un error con el JSON, revisa que el JSON sea valido

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Comparte lo que sabes

Categorias

Últimas entradas

Una Prueba Unitaria, es una forma de comprobar que nuestro código, hace lo que se supone debe hacer; es decir, se asegur...

La prueba del camino básico, es una prueba de “caja blanca” que consiste en verificar el código de nuestros...

Si quieres cambiar el nombre de tus atributos sin tener que reescribir código java por X o Y razón, GSON te permite reno...

Un JList nos permite almacenar objetos en una lista y mostrarlos gráficamente en una serie vertical en el cual el usuari...

Android Bolivia

Bandera en Alto