Route::post('/demo',[Test::class, 'test']);
h5 为 return redirect('/');
api 为 return json(['code'=>400,'msg'=>'路由不存在']);
admin_api ...
shop_admin 等等
已下是我自己写的
Route::group('/api', function () {
Route::any('/demo',[Test::class, 'test']);
Route::any('/test/del/{id}',[Test::class, 'del']);
})->middleware([
//登录权限中间件
app\common\middleware\ApiAuth::class,
]);
#不存在 这个是h5的错误重定向
Route::fallback(function(){
return redirect('/index/index');
});
Route::disableDefaultRoute();
webmam 最新版本
php 7.4
nginx 1.2
把fallback放在Route::any() 回调里面 或者在Route::group()组外面 都不成功
Route::group('/api', function () {
Route::post('/demo',[Test::class, 'test'],function($request){
return json(['code'=>400,'msg'=>'路由不存在']);
});
})->middleware([
]);
你这个大可不必用路由规则,直接按默认路由走就行,中间件自行判断是不是post|get,框架也有自己兜底的异常和404,直接用好了
下面是你想要的么
访问接口 ,如果请求的方式不对或者方法不存在,则需要return json(['code'=>404,'msg'=>'路由不存在']);
3.按照你上诉的方法,也是可以实现想要的
public function process(Request $request, callable $handler) : Response
{
$token = $request->header('authorization');
// 用户未登录
if( !$token ) return json(['code' => 400, 'msg' => '请先登录']);
}
,就想着,路由能不能就把问题处理了,就不需要走中间件
路由处理的话,any不只有get和post
感谢上面那位大佬
已完成预期效果
这是api的效果
这是h5的效果
直接访问域名a.com 会从定向为 a.com/index/index
但是当前路由还需更简洁,把api、admin_api、shop_api 抽离出来,放到common下的路由来单独管理,等完成再分享出来