Este es un ejemplo de una API RESTful construida con el 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.
Las principales tecnologías utilizadas en este proyecto son:
- PHP 8
- Slim 3
- MySQL
- Redis
- dotenv
- PHPUnit
- JSON Web Tokens (JWT)
Además, utilizo otras herramientas adicionales como por ejemplo:
- Docker & Docker Compose
- Travis CI
- Swagger
- Code Climate
- Scrutinizer
- Sonar Cloud
- PHPStan
- PHP Insights
- Heroku
- CORS
- 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.
Mira esta 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.28 by Sebastian Bergmann and contributors.
........................................................ 56 / 56 (100%)
Time: 00:00.697, 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.
Puedes hacer deploy de esta API usando Heroku.
Para obtener más información sobre este proyecto, consulta mi publicación: Cómo crear una API REST con Slim PHP.
También puede echar un vistazo a la aplicación web de la lista de tareas que desarrollé usando esta API en Angular.
Si desea contribuir al proyecto, abra un isse o envíe una solicitud de extracción (PR). ¡Las contribuciones son siempre bienvenidas!
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.