1. 路由定义

1. 通过配置文件形式

配置方式与laravel的配置方式相似

php 复制代码
<?php
use Hyperf\HttpServer\Router\Router;

Router::get('/hello-hyperf', function () {
    return 'Hello Hyperf.';
});

// 设置一个 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']);

// 路由组的定义方式
Router::addGroup('/user/',function (){
    Router::get('index','App\Controller\UserController@index');
    Router::post('store','App\Controller\UserController@store');
});

2. 通过注解形式

2.1. AutoController

  • 自动根据类名和方法名创建对方的URL

    访问url: http://127.0.0.1:9501/index/index

    php 复制代码
    <?php
    namespace App\Controller;
    use Hyperf\HttpServer\Annotation\AutoController;
    
    #[AutoController]
    class IndexController extends AbstractController
    {
        public function index()
        {
            $user = $this->request->input('user', 'Hyperf');
            $method = $this->request->getMethod();
    
            return [
                'method' => $method,
                'message' => "Hello {$user}.",
            ];
        }
    }

2.2. Controller

  • 为满足更细致的路由定义需求而存在

    访问url: http://127.0.0.1:9501/book/index

    php 复制代码
    <?php
    namespace App\Controller;
    use Hyperf\HttpServer\Annotation\Controller;
    use Hyperf\HttpServer\Annotation\RequestMapping;
    use Hyperf\HttpServer\Contract\RequestInterface;
    use Hyperf\HttpServer\Contract\ResponseInterface;
    
    #[Controller(prefix: "book")]
    class BookController extends AbstractController
    {
        #[RequestMapping(path: "index", methods: "get, post, put, patch, delete")]
        public function index(RequestInterface $request, ResponseInterface $response)
        {
            $data = new \DateTime();
            return $response->raw('Hello Hyperf!');
        }
    }
相关推荐
萝卜兔0081 小时前
PIKACHU_UnsafeFileUpload
javascript·php
OxYGC1 小时前
[工程] PHP2Shell 漏洞解析:两条 PHP 内核 RCE,为什么应用层的防护全部失效
android·开发语言·php
李纲明2 小时前
WordPress 媒体库上传失败或一直转圈:先核 PHP 上传限制与目录权限,再查安全插件与对象存储
运维·开发语言·安全·php·wordpress·媒体库·devdiy
niucloud-admin13 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
ESDWAN13 小时前
企业网络监控应该监测哪些目标?网关、网络节点还是业务系统?
服务器·网络·php
呆呆虫1214 小时前
用 orjson 加速 SerpBase 响应解析:基准对比与注意事项
开发语言·php
中科三方16 小时前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php
云边云科技_云网融合18 小时前
面向汽车零部件制造业场景的解决方案 | 70 秒:一台车下线的时间里,藏着五张网
开发语言·汽车·php
李纲明21 小时前
WordPress 媒体库上传图片失败:先核 PHP 体积与目录权限,再查安全插件与对象存储
php·上传·wordpress·媒体库·devdiy
海域云SeaArea_21 小时前
Windows Server 2008 R2 从零安装 IIS7.5(二):php.ini 配置
开发语言·windows·php