开启强制路由
系统默认开启强制路由,可以防止恶意访问,提高系统安全性。
公共配置文件位置:config/route.php

以admin模块举例,配置文件位置:app/admin/config/route.php
<?php
return [
// 是否强制使用路由
'url_route_must' => true,
// 合并路由规则
'route_rule_merge' => true,
// 路由是否完全匹配
'route_complete_match' => true,
// 是否自动转换URL中的控制器和操作名
'url_convert' => false,
];路由文件目录
以admin模块举例

添加路由
以admin模块下的Article控制器举例,新增test方法,添加路由,接口访问地址:http://域名/admin/cms/article/test
系统代码生成功能自动添加路由文件,无需手动添加路由。
路由地址可以不跟控制器方法一一对应,可自行调整。
控制器文件位置:admin/controller/cms/Article.php,新增test方法
public function test()
{
$params = (new ArticleValidate())->post()->checkParam('test');
$result = ArticleService::test($params);
if(true === $result) {
return $this->success([], '修改成功');
} else {
return $this->error(ArticleService::getError());
}
}路由文件位置:app/admin/route/cms.php,新增test路由
Route::post('cms/article/test', 'cms.Article/test');使用中间件
用以上举例,路由添加中间件
use app\admin\middleware\LoginMiddleware; // 登录中间件
use app\admin\middleware\AuthMiddleware; // 权限中间件
use app\admin\middleware\OperationLog; // 操作日志中间件
Route::post('cms/article/test', 'cms.Article/test')->middleware([
LoginMiddleware::class,
AuthMiddleware::class,
OperationLog::class
]);路由分组
用以上举例,新增路由到分组中
路由分组支持嵌套
use app\admin\middleware\LoginMiddleware; // 登录中间件
use app\admin\middleware\AuthMiddleware; // 权限中间件
use app\admin\middleware\OperationLog; // 操作日志中间件
Route::group('cms', function () {
Route::group('article', function () {
//文章列表
Route::get('lists', 'cms.Article/lists');
//添加文章
Route::post('add', 'cms.Article/add');
//编辑文章
Route::post('edit', 'cms.Article/edit');
//文章详情
Route::get('detail', 'cms.Article/detail');
// test路由
Route::post('test', 'cms.Article/test');
});
})->middleware([
LoginMiddleware::class,
AuthMiddleware::class,
OperationLog::class
]);miss路由
没有匹配到所有的路由规则后执行一条设定的路由,系统默认的miss路由
Route::miss(function () {
if (app()->request->isOptions()) {
$header = Config::get('cookie.header');
$header['Access-Control-Allow-Origin'] = app()->request->header('origin');
return Response::create('ok')->code(200)->header($header);
} else
return Response::create()->code(404);
});