Example of RESTful API with Slim PHP micro framework.
This simple API allows you to manage resources such as: users, tasks and notes.
You can also read this README IN SPANISH.
Main technologies used: PHP 8, Slim 3, MySQL, Redis, dotenv, PHPUnit and JSON Web Tokens.
Also, I use other aditional tools like: Docker & Docker Compose, Travis CI, Swagger, Code Climate, Scrutinizer, Sonar Cloud, PHPStan, PHP Insights, Heroku and CORS.
More info about this project in my post: How to create a REST API using Slim PHP.
I implemented this API in this project. It's a todo list web app developed in Angular.
- Git.
- Composer.
- PHP >= 8.0
- MySQL/MariaDB.
- Redis (Optional).
- or Docker.
You can create a new project running the following commands:
$ composer create-project maurobonfietti/rest-api-slim-php [my-api-name]
$ cd [my-api-name]
$ composer restart-db
$ composer test
$ composer start
In your terminal execute this commands:
$ 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
You can use this project using docker and docker-compose.
Minimal Docker Version:
- Engine: 18.03+
- Compose: 1.21+
Commands:
# 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
If you get stuck, you can try this guide step by step.
Mini-series of videos about Slim PHP (Spanish Audio π πͺπΈ π¦π·).
How to install and configure this API.
How to use JWT for Authentication.
- slim/slim: Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs.
- respect/validation: The most awesome validation engine ever created for PHP.
- palanik/corsslim: Cross-origin resource sharing (CORS) middleware for PHP Slim.
- vlucas/phpdotenv: Loads environment variables from
.env
togetenv()
,$_ENV
and$_SERVER
automagically. - predis/predis: Flexible and feature-complete Redis client for PHP and HHVM.
- firebase/php-jwt: A simple library to encode and decode JSON Web Tokens (JWT) in PHP.
- phpunit/phpunit: The PHP Unit Testing framework.
- phpstan/phpstan: PHPStan - PHP Static Analysis Tool.
- pestphp/pest: Pest is an elegant PHP Testing Framework with a focus on simplicity.
- nunomaduro/phpinsights: Instant PHP quality checks from your console.
- vimeo/psalm: A static analysis tool for finding errors in PHP applications.
- rector/rector: Instant Upgrades and Instant Refactoring of any PHP 5.3+ code.
Run all PHPUnit tests with 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}
Also, you can see the API documentation with the full list of endpoints.
All the information of the API, prepared to download and use as postman collection: Import Collection.
Also, you can view the OpenAPI Specification, using Swagger UI.
You can deploy this API with Heroku Free.
You can support this project inviting me a coffee β π or giving a star to this repo β π.
The MIT License (MIT). Please see License File for more information.