maurobonfietti/rest-api-slim-php

Example of REST API with Slim PHP Framework.

1.26.0 2020-09-23 23:27 UTC

README

Example of RESTful API with Slim PHP micro framework.

This simple API allows you to manage resources such as: users, tasks and notes.

Software License Build Status Quality Gate Status Code Quality Test Coverage Packagist Version

You can also read this README IN SPANISH.

Main technologies used: PHP 7, 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.

⚙️ QUICK INSTALL:

Requirements:

  • Git.
  • Composer.
  • PHP 7.3+.
  • MySQL/MariaDB.
  • Redis (Optional).
  • or Docker.

With Composer:

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

How to install

With Git:

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

With Docker:

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

🔧 TROUBLESHOOTING:

If you get stuck, you can try this guide step by step.

🎦 TUTORIALS:

Mini-series of videos about Slim PHP (Spanish Audio 🔉 🇪🇸 🇦🇷).

📹 VIDEO #1

How to install and configure this API.

🎥 VIDEO #2

How to use JWT for Authentication.

📹 VIDEO #3

Using Redis Cache.

🎥 VIDEO #4

Deploy Slim PHP on Heroku.

📦 DEPENDENCIES:

LIST OF REQUIRE DEPENDENCIES:

  • 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 to getenv(), $_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.

LIST OF DEVELOPMENT DEPENDENCIES:

🚥 TESTING:

Run all PHPUnit tests with composer test.

$ composer test
> phpunit
PHPUnit 9.3.8 by Sebastian Bergmann and contributors.

..............................................................    62 / 62 (100%)

Time: 00:00.484, Memory: 18.00 MB

OK (62 tests, 386 assertions)

📚 DOCUMENTATION:

ENDPOINTS:

INFO:

  • Help: GET /

  • Status: GET /status

USERS:

  • Login User: POST /login

  • Create User: POST /api/v1/users

  • Update User: PUT /api/v1/users/{id}

  • Delete User: DELETE /api/v1/users/{id}

TASKS:

  • 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}

NOTES:

  • 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.

HELP AND DOCS:

For more information on how to use the REST API, see the following documentation available on Postman Documenter.

IMPORT WITH POSTMAN:

All the information of the API, prepared to download and use as postman collection: Import Collection.

Run in Postman

OPEN API SPEC:

Also, you can view the OpenAPI Specification, using Swagger UI.

🚀 DEPLOY:

You can deploy this API with Heroku Free.

Deploy

🎮 GIVE IT A TRY:

Check it out to this LIVE DEMO.

❤️ DO YOU LIKE THE PROJECT?

You can support this project inviting me a coffee ☕ 😋 or giving a star to this repo ⭐ 😎.

Buy Me a Coffee at ko-fi.com

📄 LICENSE

The MIT License (MIT). Please see License File for more information.