Code Monkey home page Code Monkey logo

framework-apirest's Introduction

📦 API REST FRAMEWORK PHP7 📦

📦 Framework API Rest pour PHP7, conçu pour être simple d’utilisation, pour un développement rapide.

C’est un projet libre, contributeurs vous êtes les bienvenues.

Permet d’être utiliser facilement sur un serveur apache2 ou nginx avec un minimum de connaissance.

compatible avec les sites web, web app / mobile app ou nimporte quel plugins AJAX ou Axios.

Projet initial https://gitlab.com/juliennaskot/api-rest-php (privé) présenté pour l'obtention d'un titre professionnel au Greta de Nice.

Le projet est une API Rest écrit avec PHP7 et fonctionnant avec une base de données MySQL.

Le point fort de ce projet est dans sa conception en framework, modifiable et libre, il a pour objectif d’être simplifié, évolutif et restera libre.

Vous pouvez m'aider à l'améliorer, l'utiliser dans vos projets personnels ou professionnels.

📝 L’objectif de ce projet est de pouvoir développer rapidement une API répondant aux exigences suivantes :

• Sécurité, nous utiliserons ce qui se fait de mieux en matière de sécurité(

Enregistrement des mots de passe hashé selon l’algorithme de votre choix(Par défaut sha256) avec en supplément un passe de hashage afin de rendre très difficile la conversion des mots de passe stockés en base de données. Un jeton en 3 parties ( Header, Payload, Signature ) connu sous le nom de JsonWebToken (JWT), afin de se moderniser avec les technologies actuelles et de lutter contre les attaques CSRF ( pour Cross Site Request Forgery ), un module supplémentaire rend encore plus difficile la découverte de ce jeton par une clé supplémentaire que seul le client peut connaître lors de la première communication avec l’API.

• Gestion des données.

• Un ensemble de method static accessible dans n’importe quel Class prédéfini comme par exemple:

REQ_DATA() qui permet la récupération des données cumulé à un nettoyage automatique des données en formulaire (*à partir de la v1.3b) désactivable en argument si besoin.

getMyId() qui permet de retourner l’ID du jeton contenu dans le JsonWebToken du client.

• Vérification des champs de formulaire, voir (REQ_DATA()).

• Conception orienté objet.

• Chaque Class est conçu en Singleton.

• Peut appeler des librairies personnalisé.

• Contient des librairies déjà préexistantes.

• Un chargeur de Class donc inutile d’utiliser un require ou include, par ailleurs elle s’instancie automatiquement si elle est conçu dans un controller avec 2 méthod requises à savoir.

instance_modular_singleton() pour instancier la class automatiquement en Singleton.

router() afin de recueillir les requêtes clientes de type URN pour nom uniforme de ressource ( *voir documentation rfc.2141 ).

📝 Un template de base est proposé sous cette forme :

class ControllerCustomExample
{
    /**
     * Pour de l'heritage multiple, plus fléxible que les namespace
     * chaque librairie peut etre stocké dans le dossier /mixins/
     */
    use customLibrairie1, otherCustomLibrarie2, customLibrarie3;

    private static $instance;
    private function __construct()
    {
        $this->pdo_db = ApiDatabase::__instance_singleton()->pdo_useDB();
        $this->require_table();
    }
    /**
     * Instancie directement dans la Class static
     * peut etre utilisé comme un constructeur,
     * la Class ne peut s'instancier autrement que par cette method static
     * etant donné que le constructeur est en privé
     */
    public static function __instance_modular_singleton()
    {
        if (!isset(self::$instance)) {
            self::$instance = new self;
        }
        self::$instance->router(); // Au moment d'instancier on charge le router
        return self::$instance;
    }
    /**
     * Type SETTER
     * Création de la table
     * no return
     */
    private function require_table()
    {
        $prefix = Config::Database()['prefix'];
        $this->pdo_db->exec("
            START TRANSACTION;

            CREATE TABLE IF NOT EXISTS `" . $prefix . "example` (
                `id` int(11) NOT NULL AUTO_INCREMENT,
                PRIMARY KEY (`id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

            COMMIT;
        ");
    }
    /**
     * Verifie si une URN est présente
     * comme identifiant de ressource en meme temps que la REQUEST_METHOD
     */
    private function router()
    {
        switch ($_SERVER['REQUEST_METHOD']) {
            case 'GET': // Lecture de données
                if (ApiMisc::isRouteUsed('show/me/example/list')) {}
                break;
            case 'POST': // Création/Ajout de données
                if (ApiMisc::isRouteUsed('add/me/example')) {}
                break;
            case 'PUT': // Mise à jour des données
                if (ApiMisc::isRouteUsed('change/me/example')) {}
                break;
            case 'DELETE': // Suppression de données
                if (ApiMisc::isRouteUsed('delete/me/example')) {}
                break;
        }
    }
}

🔖 Licence

Ce logiciel est sous licence CC BY-SA 3.0 FR.

🚚 Installation

Télécharger le framework via GIT clone

git clone https://gitlab.com/juliennaskot/framework-apirest

Paramétrage du framework

cd src
edit config.env.php

Installation des librairies de composer

cd src
composer install

Si vous souhaitez rejoindre le discord du projet

🟨 DISCORD du projet

🍺 Si vous souhaitez m’offrir une bière

😍 PAYPAL

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.