thinkphp8路由使用整理(一)

说明:本教程只是整理出使用的用法,方便忘记时快速查找。如果需要详细的教程请参考官方文档。

一、路由定义

使用场景: 为不同页面或功能创建唯一的 URL 地址。

示例:

<?php

use think\facade\Route;

Route::get('hello', 'index/Index/hello');

当用户访问 /hello 时,将会调用 index 控制器的 hello 方法。

使用案例:

假设你正在开发一个博客系统,你可以为文章列表和文章详情创建不同的路由规则。

Route::get('articles', 'blog/Index/index'); // 文章列表

Route::get('articles/:id', 'blog/Article/read'); // 文章详情

二、变量规则

使用场景: 在 URL 中传递参数,以便在控制器方法中使用。

示例:

Route::get('user/:id', 'index/User/read');

当用户访问 /user/1 时,$id 参数将会被设置为 1。

使用案例:

在一个电商网站中,你可以使用变量规则来获取商品详情。

Route::get('products/:id', 'shop/Product/detail'); // 获取商品详情

三、路由参数

使用场景: 在一个 URL 中传递多个参数。

示例:

Route::get('user/:name,:age', 'index/User/info');

当用户访问 /user/John,25 时,$name 参数将会被设置为 John,$age 参数将会被设置为 25。

四、路由中间件

使用场景: 在请求到达控制器之前或之后执行一些操作,如身份验证、日志记录等。

示例:

Route::middleware(['auth'])->group(function () {

    Route::get('profile', 'index/User/profile');

});

使用案例:

在一个需要登录才能访问的网站中,你可以使用中间件来实现权限控制。

Route::middleware(['auth'])->group(function () {

    Route::get('dashboard', 'admin/Dashboard/index'); // 仪表盘

});

五、路由分组

使用场景: 将具有相似特性的路由规则组合在一起,便于管理和维护。

示例:

Route::group('admin', function () {

    Route::get('index', 'admin/Index/index');

    Route::get('login', 'admin/Index/login');

});

使用案例:

在一个多用户系统中,你可以为每个角色创建一个路由分组。

Route::group('admin', function () {

    // 管理员相关路由

});

Route::group('user', function () {

    // 普通用户相关路由

});

六、资源路由

使用场景: 自动生成与资源相关的路由规则,简化 API 接口的构建。

示例:

Route::resource('user', 'index/User');

使用案例:

在一个 RESTful API 中,你可以使用资源路由来管理用户资源。

Route::resource('users', 'api/User'); // 用户资源

七、注解路由

使用场景: 在控制器方法上添加注解来定义路由规则,使代码更简洁。

示例:

namespace app\index\controller;



use think\annotation\Route;



class User

{

    #[Route('user/:id')]

    public function read($id)

    {

        // ...

    }

}

八、路由绑定

使用场景: 将 URL 中的参数绑定到模型,简化数据操作。

示例:

在一个电商网站中,你可以使用路由绑定来获取商品详情。

Route::bind('Product', 'app\model\Product');



Route::get('products/:id', 'shop/Product/detail'); // 获取商品详情

九、域名路由

使用场景: 根据不同的域名来定义不同的路由规则,实现子域名功能。

示例:

Route::domain('admin.example.com')->group(function () {

    Route::get('index', 'admin/Index/index');

});

使用案例:

在一个多租户系统中,你可以使用域名路由来实现不同租户的隔离。

Route::domain('tenant1.example.com')->group(function () {

    // 租户 1 的路由规则

});

Route::domain('tenant2.example.com')->group(function () {

    // 租户 2 的路由规则

});

十、MISS路由

使用场景: 处理不存在的路由,返回自定义的错误页面或信息。

示例:

Route::miss('index/Index/miss');

使用案例:

在一个网站中,你可以使用 MISS 路由来处理 404 错误。

Route::miss('index/Index/notFound'); // 自定义 404 页面

十一、跨域请求

使用场景: 支持跨域请求,允许不同源的客户端访问 API。

示例:

Route::middleware(['cors'])->group(function () {

    // ...

});

使用案例:

在一个前后端分离的项目中,你可以使用跨域中间件来支持前端请求。

Route::middleware(['cors'])->group(function () {

    Route::get('api/data', 'api/Data/getData'); // 获取数据

});

十二、RESTful 风格

使用场景: 构建符合 RESTful 风格的 API 接口,便于前后端分离开发。

示例:

Route::resource('user', 'api/User');

使用案例:

在一个社交网络应用中,你可以使用 RESTful 风格的路由来管理用户和帖子。

Route::resource('users', 'api/User'); // 用户资源

Route::resource('posts', 'api/Post'); // 帖子资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值