ccc

Webs Services con Slim Framework

Instalar esta extensión en Chrome (nos servirá para probar los envios por post, get, put, delete, etc)
chrome extensions rest easy
Aunque si ya tienes instalado Postman no hace falta que te instales Rest easy

En https://www.slimframework.com/ está toda la documentación y también en https://www.youtube.com/watch?v=jJwDehC2sEM

Lo primero tener instalado el XAMPP y el composer, crear en el phpmyadmin del localhost una bd y una tabla para hacer pruebas, para más comodidad podemos crear un virtualhost pq sino para ejecutarlo hay que poner:

http://localhost/slim/public/index.php/api/clientes/agregar

Para crear el virtualhost modificar como siempre los ficheros:

C:\xampp\apache\conf\extra\httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/slim/public"
    ServerName appslim
</VirtualHost>

C:\Windows\System32\drivers\etc\hosts (editarlo como siempre como Administrador)
127.0.0.1 appslim

Reiniciar el xampp. De esta manera para ejecutarlo se podrá poner solo:
http://appslim/api/clientes/2

Creamos la carpeta (por ejemplo slim) y dentro de esa carpeta de htdocs del xampp y desde la consola:

composer require slim/slim "^3.0"

Te crea toda la estructura con el vendor.

Para crear las funciones de nuestra API descargar todo el código de la carpeta public y src de aquí:

https://github.com/leandrosiegar/slim

Para probarlo desde esa extensión de chrome por ejemplo para listar:

----------------------------------------------
http://appslim/api/clientes/2
Method: GET
-------------------------------------------
Ejemplo para agregar:

http://appslim/api/clientes/agregar

Method: POST

Headers:
  Name: Content-Type
  Value: application/json

Body:
{
  "nombre":"111",
  "apellidos": "222",
  "telefono": "222",
  "email": "222",
  "direccion": "222",
  "apellidos": "222",
  "ciudad": "222",
  "departamento": "222"
}
--------------------------------------------

Si queremos mandarle autentificación en el header desde un CURL de una web externa:
$username = "uno";
$password = "dos";
$headers = array(
    'Content-Type: application/json',
'Authorization: Basic '. base64_encode("$username:$password")
);
$url = "https://midominio.com/slim/public/index.php/api/clientes";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_POST, false);
$result = curl_exec($ch);
curl_close($ch);
echo $result;

Entonces habrá que crear un htaccess donde esté nuestro slim:
RewriteEngine On
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

Y para verificar la autentificación por ejemplo en clientes.php:
$_SERVER["HTTP_AUTHORIZATION"] = str_replace("Basic ", "", $_SERVER["HTTP_AUTHORIZATION"]);
if ($_SERVER["HTTP_AUTHORIZATION"] == base64_encode("uno:dos")) {
    // codigo a ejecutar
}
else {
      echo "No tienes permiso<hr>";
      exit;
}

No hay comentarios:

Publicar un comentario