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 URL «http://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 «.htaccess» y 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 Group «Sample API» y en Request Name «obtener 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 Name «nueva 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

JavaFX y ApiRest – GET

JavaFX y ApiRest – GET

En este tutorial construiremos una aplicación en JavaFX para leer datos de un servicio web Herramientas IDE Netbeans 8.x...

Gestión de Stock – La Vista (Parte 3)

Gestión de Stock – La Vista (Parte 3)

En esta tercera parte del tutorial crearemos la interfaz de usuario GUI (VISTA) para el sistema de gestión de stock. Tom...

jFace – Crea retratos hablados

jFace – Crea retratos hablados

La policia, el FBI u otros organismos similares utilizaban a dibujantes para realizar el «retrato hablado» de algún male...

Crear y mover objetos en tiempo de ejecución

Crear y mover objetos en tiempo de ejecución

Dando respuesta a una interrogante sobre el como crear objetos en tiempo de ejecución y como manipular estos, desarrolle...

Crear web multi-lenguaje con php

Crear web multi-lenguaje con php

En este tutorial realizaremos un proyecto web de un «sitio multi lenguaje» o «web multi idiomas» como prefieran llamarlo...

Blog MVC – El theme y primer controlador [p3]

Blog MVC – El theme y primer controlador [p3]

Tercera parte del tutorial [Crea tu blog con el patrón MVC y php] En este post trabajaremos en el Theme del blog, agrega...

10 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

  4. Oscar dice:

    Hola. Estoy muy perdido a ver si alguien pudiera explicármelo despacio porfavor. No tengo ni idea de PHP.
    Me han dado una API de fotolia para poner en mi web y no se que hacer con ella ni donde ponerla.
    Donde la pongo??

  5. mauricio dice:

    por que
    http://localhost/SampleWS/peoples ???? si peoples no aparece en ninguna parte del codigo???

    1. Mouse dice:

      ese es el Identificador de Recurso, bien podría ser «localhost/SampleWS/personas» o «localhost/SampleWS/estudiantes» etc. Se forma con el archivo .htaccess y también existen normas que hay que seguir para su diseño, es decir «localhost/SampleWS/dame_personas» esta mal

  6. Guido Caro dice:

    Solo para aclarar un poquito las cosas.
    La carpeta contenedora no debería llamarse «Source Files» sino «peoples»,
    sampleWS>peoples
    .htaccess
    index.php
    PeopleAPI.php
    PeopleDB.php

    Así cuando hagamos la llamada con Insomnia a la dirección «http://localhost/SampleWS/peoples» no nos dará ningún error.

    Otro pequeño detalle en el archivo PeopleAPI.php, no se olviden colocar «» al final, para los que realmente son nuevos.

    1. Guido Caro dice:

      Otro pequeño detalle en el archivo PeopleAPI.php, no se olviden colocar la apertura y cierre de php

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y...

Herramientas

Generador de Enlaces a Whatsapp