erykai / routes
负责管理应用路由
v1.3.5
2023-04-04 21:35 UTC
Requires
- php: >=8.0
README
负责应用路由的包,包括中间件,适用于创建API REST的路由。
安装
Composer
"erykai/routes": "1.3.*"
终端
composer require erykai/routes
创建Apache的 .htaccess
RewriteEngine on RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php?route=$1
或者nginx
location / {
if ($script_filename !~ "-f"){
rewrite ^(.*)$ /index.php?route=$1 break;
}
}
创建index.php
use Erykai\Routes\Route; require "vendor/autoload.php"; $route = new Route(); $route->namespace('Erykai\Routes'); $route->get('/', 'Controller@home'); $route->get('/post', 'Controller@post'); $route->get('/post/{id}', 'Controller@post'); $route->get('/post/{id}/{slug}', 'Controller@post'); $route->post('/login', 'Controller@login'); $route->post('/create/post', 'Controller@post'); $route->put('/edit/post', 'Controller@postPut'); $route->delete('/delete/post', 'Controller@postDelete'); //create all get, post, put and delete $route->default('/user', 'Controller'); $route->exec(); var_dump($route->response());
在index.php中配置JWT键的路由和中间件
use Erykai\Routes\Route; require "vendor/autoload.php"; const KEY_JWT = '1AAAJ@90jjkhgO```˜˜˜IHJN'; $route = new Route(); $route->namespace('Erykai\Routes'); $route->get('/', 'Controller@home'); $route->get('/post', 'Controller@post'); $route->get('/post/{id}', 'Controller@post', true); $route->get('/post/{id}/{slug}', 'Controller@post', true); $route->post('/login', 'Controller@login'); $route->post('/create/post', 'Controller@post', true); $route->put('/edit/post', 'Controller@postPut', true); $route->delete('/delete/post', 'Controller@postDelete', true); //create all get, post, put and delete $route->default('/user', 'Controller', [true,false,false,false]); $route->exec(); var_dump($route->response());
在index.php中配置JWT键的路由和中间件,以及响应类型
use Erykai\Routes\Route; require "vendor/autoload.php"; const KEY_JWT = '1AAAJ@90jjkhgO```˜˜˜IHJN'; $route = new Route(); $route->namespace('Erykai\Routes'); $route->get('/', 'Controller@home', type: "json"); $route->get('/post', 'Controller@post'); $route->get('/post/{id}', 'Controller@post', true, "object"); $route->get('/post/{id}/{slug}', 'Controller@post', true, "array"); $route->post('/login', 'Controller@login', type: "json"); $route->post('/create/post', 'Controller@post', true, "json"); $route->put('/edit/post', 'Controller@postPut', true, "json"); $route->delete('/delete/post', 'Controller@postDelete', true, "json"); //create all get, post, put and delete $route->default('/user', 'Controller', [true,false,false,false], "json"); $route->exec(); var_dump($route->response());
创建控制器类Controller.php
namespace Erykai\Routes; use stdClass; /** * Example object define routes */ class Controller { /** * @return bool */ public function home(?array $data, string $response): bool { echo "home"; var_dump($response); return true; } /** * @return bool */ public function login(?array $data, string $response): bool { $json = file_get_contents('php://input'); $login = json_decode($json); if (empty($login->email) || empty($login->password)) { echo 203 . " Email ou senha invalido"; return false; } if(!filter_var($login->email, FILTER_VALIDATE_EMAIL)){ echo 203 . " Email invalido"; return false; } $user = new stdClass(); $user->email = "webav.com.br@gmail.com"; $user->password = "10203040"; if($user->email !== $login->email){ echo 203 . " Email ou senha invalido"; return false; } if($user->password !== $login->password){ echo 203 . " Email ou senha invalido"; return false; } $middleware = new Middleware(); echo $middleware->create($user->email); return true; } /** * @param array|null $data * @return bool */ public function post(?array $data, string $response): bool { var_dump($data, $_POST, file_get_contents('php://input')); return true; } /** * @param array $data * @return bool */ public function postPut(?array $data, string $response): bool { var_dump($data, file_get_contents('php://input')); return true; } /** * @param array $data * @return bool */ public function postDelete(?array $data, string $response): bool { var_dump($data, file_get_contents('php://input')); return true; } }
贡献
所有贡献都将被分析,如果你进行了多项更改,请逐项提交。
支持
如果你发现错误,请发送电子邮件到 webav.com.br@gmail.com 报告。
鸣谢
- Alex de O. Vidal (开发者)
- 所有贡献 (贡献者)
许可协议
MIT许可协议(MIT)。请参阅 许可协议 了解更多信息。