Crear REST API con PHP y MySql en un Hosting compartido

Php
  
Desarrollo Web
  
Mysql
  
Api Rest
    05 Junio, 2019   Regresar el blog
Compartir:

Paso a paso ¿Cómo crear una REST API en PHP y MySQL para ser consumida por cualquier aplicación?


Existe un gran numero de frameworks disponibles para poder crear un REST API. Para este artículo se escogió Slim.  es un micro framework que te permite escribir aplicaciones web y API´s de forma rápida y eficiente. 


En este post, crearemos la  REST API en un hosting (compartido) paso a paso utilizando  MySQL y  PHP,  Veremos el servicio REST con ejemplos de todos los métodos disponibles como lo son: POST, GET, PUT y DELETE. La respuesta que nos devolverá el REST API será en formato JSON.


Para los que no saben que es JSON (acrónimo de JavaScript Object Notation),  básicamente es un formato de intercambio de datos bastante ligero que puede ser usado por la mayoría de los lenguajes para comunicarse entre si.


Métodos (verbos)  del servidor (HTTP):

  • GET: se utiliza para retornar y buscar información en la base de datos.
  • POST: se utiliza para insertar información a la base de datos.
  • PUT: se utiliza para actualizar información en la base de datos.
  • DELETE: se utiliza para eliminar información de la base de datos.


Nuestra API REST tendrá el siguiente funcionamiento:


Ruta Método Tipo Descripción
api/games/v1 GET JSON Lista todos los juegos
api/games/v1/{id} GET JSON Lista un juego en particular
api/games/v1/add POST JSON Agrega un juego
api/games/v1/{id} PUT JSON Actualiza un juego
api/games/v1/{id} DELETE JSON Elimina un juego


Como vez algunas de las rutas son las mismas,  es una de las grandes ventajas al trabajar con REST APi

De hecho si ingresas a cada ruta obtendremos el resultado de esa petición por ejemplo: https://tupaginaonline.net/api/games/v1

obtendremos el siguiente resultado (json):


[{"id":"1","nombre":"Fallout 4","plataforma":"Multi","ano":"2014","genero":"Rol","created_ad":"2019-06-04 09:47:40"},{"id":"2","nombre":"The Witcher 3: Wild Hunt","plataforma":"Multi","ano":"2013","genero":"Aventuras","created_ad":"2019-06-04 09:48:07"},{"id":"3","nombre":"Resident evil 7","plataforma":"Multi","ano":"2017","genero":"Terror","created_ad":"2019-06-04 15:47:38"},{"id":"6","nombre":"The Legend of Zelda : The wind waker","plataforma":"Nintendo","ano":"2002","genero":"Aventuras","created_ad":"2019-06-04 16:42:46"}]


Vamos a empezar:

Sigue los pasos al pie de la letra para que tu REST API funcione correctamente.


1) Paso : 

Crea una carpeta llamada api dentro de tu hosting: ejemplo : public_html/mi_rest_api/api

una vez creada la carpeta api dirígete hacia la opción: Avanzada > Terminal


terminal


Una vez dentro del terminal procede a dirigirte hacia la carpeta creada, escribe dentro de la terminal   el comando

cd public_html/mi_rest_api/api


introduce el siguiente comando para verificar que tienes instalado composer: Composer es una herramienta para la gestión de dependencias en PHP. Le permite declarar las bibliotecas de las que depende su proyecto y las administrará (instalará / actualizará) por usted.

composer -v

asumiendo que ya lo tienes instalado procedemos, si no ponte en contacto con tu proveedor de hosting.

una vez ya dentro de la carpeta api, vas a introducir el siguiente comando:

composer require slim/slim "^3.12"

Para conocer que todo ha ido bien revisar en nuestro directorio si existe la carpeta vendor, abrir el archivo composer.json con tu editor de código preferido, el contenido de composer.json debería ser el siguiente:


{

"require":

            { "slim/slim": "^3.12"

            }

}


2) Paso : 


Procedemos a crear la base de datos.

creamos una tabla con las siguientes características :

CREATE TABLE `games` (

`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`nombre` varchar(150) NOT NULL,

`plataforma` varchar(50) NOT NULL,

`ano` int(11) NOT NULL,

`genero` varchar(40) NOT NULL,

`created_ad` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP )  


3) Paso : 


Crear archivo .htaccess dentro de la carpeta api  con el siguiente contenido:


RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^ index.php [QSA,L]


4) Paso : 


creamos el archivo de conexión a la base de datos llamado bd.php

con el siguiente contenido:


< ?php function getConnection() {

$dbhost="localhost";

$dbuser="user";

$dbpass="";

$dbname="bd_name";

$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $dbh; }

?>



5) Paso : 


Crearemos el .index con el siguiente contenido:

< ?php

require "bd.php";

require "functions.php";

use PsrHttpMessageServerRequestInterface as Request;

use PsrHttpMessageResponseInterface as Response;

require ´vendor/autoload.php´;


$app = new SlimApp();

//AQUI SE CREAN LAS RUTAS DE NUESTRA REST API

$app->get(´/games/v1´, ´all_Games´); //Obtener todos los juegos

$app->get(´/games/v1/{id}´, ´select_Game´); // Obtener un juego

$app->post(´/games/v1/add´, ´add_Game´); //Agregar un juego

$app->put(´/games/v1/{id}´, ´update_Game´); //Actualizar un juego

$app->delete(´/games/v1/{id}´, ´delete_Game´); //Eliminar un juego

$app->run();

?>


6) Paso : 

Crear el archivo llamado  functions.php con el siguiente contenido: 


< ?php
function all_Games($response) {
$sql = "SELECT * FROM games";
try {
$stmt = getConnection()->query($sql);
$games = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
return json_encode($games);
} catch(PDOException $e) {
echo ´{"error":{"text":´. $e->getMessage() .´}}´;
}
}
function select_Game($request) {
$id = $request->getAttribute(´id´);
$sql = "SELECT * FROM games where id=:id";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
$stmt->bindParam("id", filter_var($id, FILTER_SANITIZE_STRING));
$stmt->execute();

$games = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
return json_encode($games);
} catch(PDOException $e) {
echo ´{"error":{"text":´. $e->getMessage() .´}}´;
}
}

function add_Game($request) {
$emp = $request->getParsedBody();
$sql = "INSERT INTO games (nombre, plataforma, ano, genero) VALUES (:nombre, :plataforma, :ano, :genero)";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
$stmt->bindParam("nombre", filter_var($emp["nombre"], FILTER_SANITIZE_STRING));
$stmt->bindParam("plataforma", filter_var($emp["plataforma"], FILTER_SANITIZE_STRING));
$stmt->bindParam("ano", filter_var($emp["ano"], FILTER_SANITIZE_STRING));
$stmt->bindParam("genero", filter_var($emp["genero"], FILTER_SANITIZE_STRING));
$stmt->execute();
$emp["id"] = $db->lastInsertId();
$db = null;
echo json_encode($emp);
} catch(PDOException $e) {
echo ´{"error":{"text":´. $e->getMessage() .´}}´;
}
}

function update_Game($request) {
$emp = $request->getParsedBody();
$id = filter_var($request->getAttribute(´id´), FILTER_SANITIZE_STRING);
$sql = "UPDATE games SET nombre=:nombre, plataforma=:plataforma, ano=:ano, genero=:genero WHERE id=:id";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
$stmt->bindParam("nombre", filter_var($emp["nombre"], FILTER_SANITIZE_STRING));
$stmt->bindParam("plataforma", filter_var($emp["plataforma"], FILTER_SANITIZE_STRING));
$stmt->bindParam("ano", filter_var($emp["ano"], FILTER_SANITIZE_STRING));
$stmt->bindParam("genero", filter_var($emp["genero"], FILTER_SANITIZE_STRING));
$stmt->bindParam("id", filter_var($id, FILTER_SANITIZE_STRING));
$stmt->execute();
$db = null;
echo json_encode($emp);
} catch(PDOException $e) {
echo ´{"error":{"text":´. $e->getMessage() .´}}´;
}
}

function delete_Game($request) {
$id = filter_var($request->getAttribute(´id´), FILTER_SANITIZE_STRING);
$sql = "DELETE FROM games WHERE id=:id";
try {
$db = getConnection();
$stmt = $db->prepare($sql);
$stmt->bindParam("id", $id);
$stmt->execute();
$db = null;
echo ´{"error":{"text":"se elimino el juego"}}´;
} catch(PDOException $e) {
echo ´{"error":{"text":´. $e->getMessage() .´}}´;
}
}

?>


El siguiente paso es probar tus rutas, lo puedes hacer con POSTMAN (Herramienta para hacer peticiones a APIs que nos permiten probar nuestra API de manera sencilla)


Con eso ya estamos listos,  si has seguido los pasos seguro habrás creado tu REST API de manera satisfactoria





Si deseas tener tu página web, dale clic al botón de abajo

¡Ordena ya tu página web!


1844 vistas
Compartir:


Autor
Jose Fuentes

- Web Developer -

0 COMENTARIO(S)
Contesta
Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *
Comentario *
Nombre *
Correo electrónico *
Sitio web

Articulos Relacionados
Articulos recientes