一 使用配置的定义 ,和laveral 类似。
1.1 路由配置
//config/route.php
Router::get("/test", 'App\Controller\TestController@test');
Router::get("/test2", 'App\Controller\TestController::test2');
Router::get("/test3", [App\Controller\TestController::class,'test3']);
1.2 写控制器做对。
<?php
//app\Controller\TestController
declare(strict_types=1);
namespace App\Controller;
class TestController extends AbstractController
{
public function test()
{
return [
'code'=>200,
'message' => "hello test.",
];
}
public function test2()
{
return [
'code'=>200,
'message' => "hello test2.",
];
}
public function test3()
{
return [
'code'=>200,
'message' => "hello test3.",
];
}
}
1.3测试使用。
curl 127.0.0.1:9501/test
{"code":200,"message":"hello test."}
curl 127.0.0.1:9501/test2
{"code":200,"message":"hello test2."}
curl 127.0.0.1:9501/test3
{"code":200,"message":"hello test3."}
1.4 其它例子。
<?php
use Hyperf\HttpServer\Router\Router;
// 此处代码示例为每个示例都提供了三种不同的绑定定义方式,实际配置时仅可采用一种且仅定义一次相同的路由
// 设置一个 GET 请求的路由,绑定访问地址 '/get' 到 App\Controller\IndexController 的 get 方法
Router::get('/get', 'App\Controller\IndexController::get');
Router::get('/get', 'App\Controller\IndexController@get');
Router::get('/get', [\App\Controller\IndexController::class, 'get']);
// 设置一个 POST 请求的路由,绑定访问地址 '/post' 到 App\Controller\IndexController 的 post 方法
Router::post('/post', 'App\Controller\IndexController::post');
Router::post('/post', 'App\Controller\IndexController@post');
Router::post('/post', [\App\Controller\IndexController::class, 'post']);
// 设置一个允许 GET、POST 和 HEAD 请求的路由,绑定访问地址 '/multi' 到 App\Controller\IndexController 的 multi 方法
Router::addRoute(['GET', 'POST', 'HEAD'], '/multi', 'App\Controller\IndexController::multi');
Router::addRoute(['GET', 'POST', 'HEAD'], '/multi', 'App\Controller\IndexController@multi');
Router::addRoute(['GET', 'POST', 'HEAD'], '/multi', [\App\Controller\IndexController::class, 'multi']);
二 使用注解 AutoController
2.1 在控制器,加上注解.
<?php
declare(strict_types=1);
namespace App\Controller;
use Hyperf\HttpServer\Annotation\AutoController;
/**
* @AutoController(prefix="test2")
*/
class Test2Controller extends AbstractController
{
public function test()
{
return [
'code'=>200,
'message' => "hello test.",
];
}
public function test2()
{
return [
'code'=>200,
'message' => "hello test2.",
];
}
public function test3()
{
return [
'code'=>200,
'message' => "hello test3.",
];
}
}
2.2 测试使用。
curl 127.0.0.1:9501/test2/test
{"code":200,"message":"hello test."}
curl 127.0.0.1:9501/test2/test2
{"code":200,"message":"hello test2."}
curl 127.0.0.1:9501/test2/test3
{"code":200,"message":"hello test3."}
三 使用Controller + requestMapping 注解
<?php
declare(strict_types=1);
namespace App\Controller;
use Hyperf\HttpServer\Annotation\GetMapping;
use Hyperf\HttpServer\Contract\RequestInterface;
use Hyperf\HttpServer\Annotation\Controller;
use Hyperf\HttpServer\Annotation\RequestMapping;
/**
* @Controller
*/
class Test3Controller extends AbstractController
{
/**
* @RequestMapping(path="test", methods="get,post")
*/
public function test(RequestInterface $request)
{
// 从请求中获得 id 参数
$id = $request->input('id', 1);
return (string)$id;
}
/**
* @RequestMapping(path="test2", methods="get,post")
*/
public function test2()
{
return [
'code'=>200,
'message' => "Test3Controller test2.",
];
}
/**
* @RequestMapping(path="test3", methods="get,post")
*/
public function test3()
{
return [
'code'=>200,
'message' => "Test3Controller test3.",
];
}
}