liamrabe/basic-router

基本路由器

v2.1.2 2022-09-17 14:28 UTC

This package is auto-updated.

Last update: 2024-09-20 04:18:35 UTC


README

基本路由器

基本安装

composer require liamrabe/basic-router

基本使用

use LiamRabe\BasicRouter\Middleware\AbstractMiddleware;
use LiamRabe\BasicRouter\Controller\AbstractErrorController;
use LiamRabe\BasicRouter\DataCollection\Response;
use LiamRabe\BasicRouter\DataCollection\Request;
use LiamRabe\BasicRouter as Router;

class APIMiddleware {
	
	public static function handle() {
		return true;
	}

}

class AppMiddleware {

	public static function handle() {
		return true;
	}

}

function handleRoute(Request $request, Response $response): Response {
	$response->setHeader('Content-Type', 'text/html');
	$response->setBody('Hello, world!');
	$response->setStatus(200);
	
	return $response;
}

try {

	/** setErrorController & setMiddleware are required before adding routes */
	Router::setErrorController(ErrorController::class, 'handleError');
	Router::setMiddleware(AppMiddleware::class, 'handleRequest');

	Router::redirect('/', '/home');

	Router::get('/home', 'handleRoute');

	Router::put('/home', 'handleRoute');

	Router::post('/home', 'handleRoute');

	Router::delete('/home', 'handleRoute');

	Router::all('/home', 'handleRoute');

	Route::group('/api', static function() {
		/** Added route will have URI '/api/v1/customer' */
		Route::get('/v1/customers', 'handleRoute');
	}, [APIMiddleware::class, 'handleRequest']);

	Router::run();

} catch (Exception $ex) {
	echo $ex->getMessage();
}

基本文档

BasicRouter 支持 GETPUTPOSTDELETE

基本 HTTP 方法

全部

/** Use this if you want to register a route on all HTTP methods */
Router::all('/', [AbstractController::class, 'handleRoute']);

GET

Router::get('/', [AbstractController::class, 'handleRoute']);

PUT

Router::put('/', [AbstractController::class, 'handleRoute']);

POST

Router::post('/', [AbstractController::class, 'handleRoute']);

DELETE

Router::delete('/', [AbstractController::class, 'handleRoute']);

基本通用方法

重定向

/** Redirect route '/' to '/home' with response code 301 */
Router::redirect('/', '/home', 301);

正则表达式 URI

您可以直接在 URI 上定义正则表达式

格式: {[参数名]:[正则表达式模式]}

示例:

/** Regex on route doesn't need parenthesis will be applied at runtime */
Router::get('/api/customers/{customer_id:[a-zA-Z0-9]+}', 'handleRoute');