naskot/api-naskot-maker

创建API的框架

dev-stable 2020-10-12 13:53 UTC

This package is auto-updated.

Last update: 2024-09-12 22:26:14 UTC


README

📦 这是一个为PHP7设计的简单易用、快速开发的API框架。

这是一个开源项目,欢迎贡献者。

可以在具有最小知识的情况下轻松部署在apache2或nginx服务器上。

与网站、Web应用、移动应用或任何AJAX或Axios插件兼容。

项目最初https://gitlab.com/juliennaskot/api-rest-php(私有)是在尼斯Greta获得专业资格时提出的。

该项目是一个使用PHP7编写的REST API,使用MySQL数据库。

该项目的优势在于其框架设计,可修改和开源,目标是简化、可扩展并保持开源。

您可以帮助我改进它,在您的个人或专业项目中使用它。

📝 此项目的目标是能够快速开发满足以下要求的API

• 安全性,我们将使用最佳安全措施(

根据您选择的算法(默认为sha256)对密码进行哈希处理,并额外添加一个哈希密码,以使存储在数据库中的密码难以转换。一个三部分令牌(Header、Payload、Signature),称为JsonWebToken(JWT),以便与当前技术保持现代化并对抗CSRF(跨站请求伪造)攻击,一个额外的模块通过一个只有客户端在第一次与API通信时才知道的额外密钥,使得发现此令牌更加困难。

• 数据管理。

• 在任何预定义的类中可访问的一组静态方法,例如

REQ_DATA(),允许获取累积数据并自动清理数据表单(*从v1.3b版本开始),可以通过参数在需要时禁用。

getMyId(),允许返回客户端JsonWebToken中的令牌ID。

• 表单字段验证,请参阅(REQ_DATA)。

• 面向对象设计。

• 每个类都设计为单例。

• 可以调用自定义库。

包含已存在的库。

• Class加载器,因此不需要使用require或include,此外,如果它在控制器中设计,则自动实例化,需要2个方法。

instance_modular_singleton(),用于自动以单例方式实例化类。

router(),用于收集客户请求的URN(统一资源名称)类型的请求。

📝 提供以下形式的模板

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

🔖 许可证

本软件采用CC BY-SA 3.0 FR许可证。

🚚 安装

通过GIT克隆框架

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

框架配置

cd src
edit config.env.php

安装composer库

cd src
composer install

如果您想加入项目的discord

🟨 项目DISCORD

🍺 如果您愿意请我喝啤酒

😍 PAYPAL