naskot / api-naskot-maker
创建API的框架
Requires
- php: >=7.2.0
- geoip2/geoip2: ~2.0
- phpmailer/phpmailer: ^6.1
- smsapi/php-client: ^2.6
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
🍺 如果您愿意请我喝啤酒
😍 PAYPAL