Ejemplo de API RESTful con micro framework Slim PHP.
Esta simple API permite administrar recursos tales como: usuarios, tareas y notas.
También puedes leerlo en inglés README IN ENGLISH.
Principales tecnologías utilizadas: PHP 8, Slim 3, MySQL, Redis, dotenv, PHPUnit and JSON Web Tokens.
Además, utilizo otras herramientas adicionales como: Docker & Docker Compose, Travis CI, Swagger, Code Climate, Scrutinizer, Sonar Cloud, PHPStan, PHP Insights, Heroku and CORS.
Más información sobre este proyecto en mi publicación: Cómo crear una API REST con Slim PHP.
Implementé esta API en este proyecto. Es una aplicación web tipo lista de tareas, desarrollada en Angular.
- Git.
- Composer.
- PHP >= 8.0
- MySQL/MariaDB.
- Redis (Opcional).
- O simplemente Docker.
Puede crear un nuevo proyecto ejecutando los siguientes comandos:
$ composer create-project maurobonfietti/rest-api-slim-php [my-api-name]
$ cd [my-api-name]
$ composer restart-db
$ composer test
$ composer start
En su terminal favorita ejecute estos comandos:
$ git clone https://github.com/maurobonfietti/rest-api-slim-php.git && cd rest-api-slim-php
$ cp .env.example .env
$ composer install
$ composer restart-db
$ composer test
$ composer start
Puedes probar este proyecto usando docker y docker-compose.
Version Requerida Docker:
- Engine: 18.03+
- Compose: 1.21+
Comandos:
# Start the API (this is my alias for: docker-compose up -d --build).
$ make up
# To create the database and import test data from scratch.
$ make db
# Checkout the API.
$ curl http://localhost:8081
# Stop and remove containers (it's like: docker-compose down).
$ make down
Si tuviste alguna duda o problema, puedes consultar esta guía paso a paso.
Mini serie de videos acerca de Slim PHP.
Cómo instalar y configurar esta API.
Ejemplo de cómo utilizar esta API con JWT para autenticación.
Cómo usar Redis en esta API con Slim PHP.
Cómo hacer el despliegue de una API con Slim PHP usando Heroku.
- slim/slim: Micro framework PHP que ayuda a escribir rápidamente aplicaciones y APIs simples pero potentes.
- respect/validation: El motor de validación más impresionante jamás creado para PHP.
- palanik/corsslim: Middleware de intercambio de recursos de origen cruzado (CORS) para PHP Slim.
- vlucas/phpdotenv: Carga las variables de entorno de
.env
agetenv()
,$_ENV
y$_SERVER
automágicamente. - predis/predis: Cliente Redis flexible y con funciones completas para PHP y HHVM.
- firebase/php-jwt: Una biblioteca simple para codificar y decodificar JSON Web Tokens (JWT) en PHP.
- phpunit/phpunit: Framework para hacer Unit Testing en PHP.
- phpstan/phpstan: PHPStan, herramienta de análisis estático para PHP.
- pestphp/pest: Pest es un elegante PHP Testing Framework con un enfoque en la simplicidad.
- nunomaduro/phpinsights: Comprobaciones instantáneas de calidad PHP desde su consola.
- vimeo/psalm: Una herramienta de análisis estático para encontrar errores en aplicaciones PHP.
- rector/rector: Actualizaciones y refactorización instantánea de cualquier código PHP 5.3+.
Ejecutar los tests PHPUnit con composer test
.
$ composer test
> phpunit
PHPUnit 9.5.10 by Sebastian Bergmann and contributors.
........................................................ 56 / 56 (100%)
Time: 00:00.628, Memory: 18.00 MB
OK (56 tests, 343 assertions)
-
Help:
GET /
-
Status:
GET /status
-
Login User:
POST /login
-
Create User:
POST /api/v1/users
-
Update User:
PUT /api/v1/users/{id}
-
Delete User:
DELETE /api/v1/users/{id}
-
Get All Tasks:
GET /api/v1/tasks
-
Get One Task:
GET /api/v1/tasks/{id}
-
Create Task:
POST /api/v1/tasks
-
Update Task:
PUT /api/v1/tasks/{id}
-
Delete Task:
DELETE /api/v1/tasks/{id}
-
Get All Notes:
GET /api/v1/notes
-
Get One Note:
GET /api/v1/notes/{id}
-
Create Note:
POST /api/v1/notes
-
Update Note:
PUT /api/v1/notes/{id}
-
Delete Note:
DELETE /api/v1/notes/{id}
Ver documentación de la API con la lista completa de endpoints.
Toda la información de la API, preparada para descargar y utilizar como colección de postman: Importar Colección.
Además se puede ver la especificación OpenAPI, utilizando Swagger UI.
Puedes hacer deploy de esta API usando Heroku Free.
Puedes apoyar este proyecto invitándome un café ☕ 😋 o dando una estrella a este repo ⭐ 😎.
Licencia MIT. Consultar Archivo de licencia para obtener más información.