[已解决]路由问题 - 不同端口返回参数

凌晨三点半的卢本伟

路由问题

存在问题:

Route::post('/demo',[Test::class, 'test']);
  1. post 正常自行流程 ,如果用get请求,接口直接空白无反应

预期效果

  1. 如果不是自定的提交类型(post|get)当前的group组路由 进行 fallback ,路由return 400 返回前端
    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([
]);

未解决需求,寻求大佬帮助

698 3 0
3个回答

powerbowen

你这个大可不必用路由规则,直接按默认路由走就行,中间件自行判断是不是post|get,框架也有自己兜底的异常和404,直接用好了

  • 暂无评论
powerbowen

下面是你想要的么

截图
截图
截图

截图

截图
截图

截图

  • 凌晨三点半的卢本伟 2022-11-22
    1. 用户访问 pc页面 ,如果请求的方式不对或者方法不存在,就需要从定向为首页 return redirect('/index/index');
    2. 访问接口 ,如果请求的方式不对或者方法不存在,则需要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' => '请先登录']);

      $uid = JwtToken::getCurrentId();
      if( !$uid ) return json(['code' => 400, 'msg' => $uid]);
      
      $response = $handler($request);
      // 请求继续向洋葱芯穿越
      return $response;

      }
      ,就想着,路由能不能就把问题处理了,就不需要走中间件

  • powerbowen 2022-11-22

    路由处理的话,any不只有get和post

感谢上面那位大佬
已完成预期效果
这是api的效果
截图
截图
截图

这是h5的效果
直接访问域名a.com 会从定向为 a.com/index/index
截图

但是当前路由还需更简洁,把api、admin_api、shop_api 抽离出来,放到common下的路由来单独管理,等完成再分享出来

  • 暂无评论
年代过于久远,无法发表回答
🔝