mateodioev / http-router
支持URL中变量的简单PHP路由器
v1.2.2
2023-06-24 21:08 UTC
Requires
- mateodioev/string-vars: ^1.2
- ralouphie/getallheaders: ^3.0
This package is auto-updated.
Last update: 2024-09-12 16:05:24 UTC
README
⚠️ 本项目仅用于教育目的。 它不打算用于生产环境。
用法
use Mateodioev\HttpRouter\exceptions\{HttpNotFoundException, RequestException}; use Mateodioev\HttpRouter\{Request, Response, Router}; $router = new Router(); // Register your endpoints here $router->get('/', function (Request $r) { return Response::text('Hello world!'); }); $router->run();
方法
您可以使用Router::get
、Router::post
、Router::put
、Router::patch
和Router::delete
方法来注册您的端点。
$router->myHttpMethod($uri, $callback);
$uri
是端点的路径。$callback
是当请求端点时将被执行的功能。每个回调(操作)必须返回Mateodioev\HttpRouter\Response类的实例或抛出InvalidReturnException异常。
静态文件
您可以使用static
方法将目录中的所有静态文件进行映射。
$router->static($baseUri, $path, $methods); // Default methods are GET
示例
tree
.
├── index.php
└── styles.css
1 directory, 2 files
$router->static('/docs', 'public/');
现在您可以访问以下uri
- /docs/index.php
- /docs/styles.css
处理所有HTTP方法
您可以使用Router::all
方法使用一个回调处理所有HTTP方法。
$router->all($uri, $callback);
路径参数
您可以在端点中使用路径参数。路径参数由一个方括号后跟参数名称定义。
/users/{id}
$router->get('/page/{name}', function (Request $r) { return Response::text('Welcome to ' . $r->param('name')); });
注意:您可以通过在参数名称后添加问号来使参数可选。
/users/{id}?
$router->get('/page/{name}?', function (Request $r) { $pageName = $r->param('name') ?? 'home'; // If the parameter is not present, the method return null return Response::text('Welcome to ' . $pageName); });
请求数据
您可以使用以下方法获取所有请求数据
Request::method()
返回请求的HTTP方法。Request::uri()
返回请求的URI。Request::url()
返回请求的URL。Request::param($name, $default = null)
返回名为$name
的参数的值或null(如果参数不存在)。Request::params()
返回所有请求URI参数。Request::headers()
返回一个包含所有请求头的数组。Request::body()
返回请求体(来自php://input)。Request::data()
返回一个包含所有请求数据的数组。当Content-Type是application/x-www-form-urlencoded或multipart/form-data时使用此方法。Request::files()
返回一个包含所有请求文件的数组。Request::query()
返回一个包含uri中所有查询参数的数组。
待办事项列表
- 添加中间件支持。
- 添加自定义错误处理器支持。