路由配置
总结:thinkphp 、webman 路由的配置问题
webman
修改路由配置为自定义:
- 在config文件夹下,app.php 取消默认设置
controller_suffix 置为空
return [
'debug' => true,
'error_reporting' => E_ALL,
'default_timezone' => 'Asia/Shanghai',
'request_class' => Request::class,
'public_path' => base_path() . DIRECTORY_SEPARATOR . 'public',
'runtime_path' => base_path(false) . DIRECTORY_SEPARATOR . 'runtime',
'controller_suffix' => '',
'controller_reuse' => false,
];- 切换到项目目录下,使用安装注解式路由
composer require sunsgne/annotations
如果不生效,或者composer.json 添加,composer update
"doctrine/annotations": "1.14",- 安装成功之后,app文件下,config文件下,plugin文件下的sunsgne的annotations的route.php文件
添加对应的全局配置路由前缀
/** @var $suffix *读取config*/
$suffix = config('app.controller_suffix', '/api');
$suffix_length = strlen($suffix);- 使用
必须在controller 文件夹下进行使用,才可以识别成功
/**
* @RequestMapping(methods="GET" , path="/json")
* @param Request $request
* @return Response
*/
public function json(Request $request)
{
return json(['code' => 0, 'msg' => 'ok']);
}
访问路径:http:{ip}/api/jsonthinkphp
1.通过类名、方法名访问,不使用路由的形式:
-在config文件夹下,route.php
默认的不要动
// 访问控制器层名称
'controller_layer' => 'controller',
// 是否强制使用路由
'url_route_must' => false,
http://ip/
默认访问(单模式访问) :
文件结构:app文件下,controller文件里面的index.php里面的index方法多模块访问配置:

切换到项目文件夹
composer require topthink/think-multi-app
在app下创建admin文件,创建对应的controller文件结构
在config文件下,app.php 中配置对应的映射名称,进行访问
// 应用映射(自动多应用模式有效)
'app_map' => [
"admin" => "admin"
],
http://ip/admin
多模式访问 :
文件结构:app文件下,admin文件下controller文件里面的index.php里面的index方法2.路由和注解的方式:
路由方式(个人不太喜欢使用)
- 在route文件下,app.php里面进行定义配置
// rule 规则(参数名称和方法参数一致) 控制器加方法名
Route::rule("details/:id","index/details");- 在config文件下,app.php文件夹
// 是否启用路由 只针对,route.php文件有效,开启自动加载文件里的规则
'with_route' => true,注解方式
- 安装注解路由
composer require topthink/think-annotation- 使用
(单模块)默认会扫描controller目录下的所有类
在app文件下,controller文件,创建对应的文件
use app\facade\Test;
use app\Request;
use think\annotation\route\Group;
use think\annotation\route\Route;
use think\facade\Cache;
#[Group("text1")]
class Index
{
#[Route("GET", 'hello/[:info]')] // ext 规定最后参数以什么形式结尾 #[Route("GET", "hello/:info",["ext"=>"html"])] 给参数加【】 表示可传可不传
public function test(string $info = 'test')
{
$data = mt_rand(10000,20000);
return jsonData(1,"ok1",$info.$data);
}
}
访问:http://ip/text1/hello多模块配置
在config文件下,annotation.php文件,配置多模块的注解访问映射
return [
'inject' => [
'enable' => true,
'namespaces' => [],
],
'route' => [
'enable' => true,
'controllers' => [
// 对应的路径,从根目录app下开始
app_path('admin/controller') => [
'name' => '/api', // 访问名称
'middleware' => [],
],
root_path('other/controller')
],
],
'model' => [
'enable' => true,
],
'ignore' => [],
];- 注意:这里要和你配置的多模块访问路径名一样
在config文件下,app.php 中配置对应的映射名称,进行访问
// 应用映射(自动多应用模式有效)
'app_map' => [
"admin" => "admin"
],示例

#[Group("text")]
class Rely extends BaseController
{
public function sess(){
Session::set("user","Li");
Session::set("role","admin");
// echo Session::get("user");
dump(Session::All());
}
public function index(){
var_dump("欢迎来到ThinkPHP8");
}
#[Route("GET", "hello")]
public function Test(){
var_dump("欢迎来到ThinkPHP81111");
}
}
访问:http://ip/admin/api/text/hello
ip + 多模块配置名+多模块路由配置+ 定义组+方法名特别注意
- 在config文件中,route.php
// 是否强制使用路由
'url_route_must' => false,
false代表,类名、方法名和注解(路由)可以一起访问
ture代表,只能使用注解方式版权所有
版权归属:念宇
