在 Hyperf 框架中,路由配置可以在 config/routes.php 文件中进行。路由配置文件会返回一个数组,其中每个元素表示一个路由定义,可以使用 get、post、put、delete 等方法来定义不同的 HTTP 方法。
以下是一个简单的路由配置示例:
<?php
use Hyperf\HttpServer\Router\Router;
Router::get('/', 'App\Controller\HomeController@index');
Router::post('/users', 'App\Controller\UserController@store');
Router::put('/users/{id}', 'App\Controller\UserController@update');
Router::delete('/users/{id}', 'App\Controller\UserController@delete');
上述路由配置定义了四个路由,分别对应了四个 HTTP 方法:GET、POST、PUT 和 DELETE。路由配置中的第一个参数表示 URL 路径,可以使用花括号 {} 来定义参数,例如 {id} 表示一个名为 id 的参数。路由配置中的第二个参数表示处理该路由的控制器方法,需要指定控制器类名和方法名,中间用 @ 符号分隔。
你还可以使用 group 方法对一组路由进行分组,例如:
<?php
use Hyperf\HttpServer\Router\Router;
Router::group([
'middleware' => [
App\Middleware\AuthenticationMiddleware::class,
],
], function () {
Router::get('/dashboard', 'App\Controller\DashboardController@index');
Router::get('/reports', 'App\Controller\ReportController@index');
Router::get('/settings', 'App\Controller\SettingsController@index');
});
上述路由配置定义了三个路由,并且使用了 group 方法将它们分组。group 方法接受一个数组作为参数,可以指定一些路由组共享的属性,例如中间件、前缀、命名空间等。
路由配置还支持一些高级特性,例如路由命名、参数约束、参数默认值等,你可以参考 Hyperf 官方文档了解更多路由配置的用法。
注解路由
在 Hyperf 框架中,除了通过配置文件进行路由配置,还可以使用注解路由来定义路由。注解路由能够更加直观地描述路由,使得代码更加简洁易懂。
要使用注解路由,需要在控制器类中定义路由注解。例如:
<?php
declare(strict_types=1);
namespace App\Controller;
use Hyperf\HttpServer\Annotation\Controller;
use Hyperf\HttpServer\Annotation\GetMapping;
use Hyperf\HttpServer\Annotation\PostMapping;
use Hyperf\HttpServer\Annotation\PutMapping;
use Hyperf\HttpServer\Annotation\DeleteMapping;
/**
* @Controller(prefix="/users")
*/
class UserController
{
/**
* @GetMapping(path="")
*/
public function index()
{
// ...
}
/**
* @PostMapping(path="")
*/
public function store()
{
// ...
}
/**
* @PutMapping(path="/{id}")
*/
public function update(int $id)
{
// ...
}
/**
* @DeleteMapping(path="/{id}")
*/
public function delete(int $id)
{
// ...
}
}
上述代码定义了一个名为 UserController 的控制器,其中使用了 @Controller 注解指定了路由前缀为 /users。此外,每个控制器方法都使用了不同的路由注解,例如 @GetMapping、@PostMapping 等。
路由注解中的参数和配置文件中的路由定义类似,例如 {id} 表示一个名为 id 的参数。注解路由也支持一些高级特性,例如路由命名、参数约束、参数默认值等,你可以参考 Hyperf 官方文档了解更多路由配置的用法。
注解路由需要在路由扫描器中进行配置,通常情况下可以使用默认配置即可。你可以在 config/routes.php 文件中找到默认的路由扫描器配置,例如:
<?php
declare(strict_types=1);
return [
'annotations' => [
'scan' => [
'paths' => [
BASE_PATH . '/app',
],
'ignore_annotations' => [
'mixin'
],
],
],
];
默认配置会扫描 app 目录下的所有 PHP 文件,并忽略 mixin 注解。如果你需要自定义路由扫描器的配置,可以在 config/routes.php 文件中进行配置。