webman 前后端嵌套问题

ylqjgm

问题描述

在开发中需要与vue整合,但又不是前后端分离,就需要与vue的路由进行匹配,如:

在vue中,所涉及到的后端请求路由为:

  1. 某页面路由: /tag/:tag
  2. api路由: /api/tag/get

在webman中,自定义路由:

  1. /api/tag/get

现在整合,并添加全局中间件进行拦截(public/index.html 是vue打包后的html文件):

public function process(Request $request, callable $handler): Response
{
    if (false === strpos($request->path(), '/api')) {
        return \response(file_get_contents(base_path('public/index.html')));
    }

    return $handler($request);
}
use app\middleware\VueCheck;

return [
    '' => [
        VueCheck::class,
    ],
];

现在剩余的问题是,我需要如何来设定我访问vue时的路由呢?也是在webman中添加相同的路由来进行匹配么?

有没有什么方法能够做到,比如我除了 /api 的路由外,其余全部路由都走vue呢?

在laravel中可以使用 {any?} 等方式匹配路由,但是webman里不可以

请问有没有什么好的方法可以使用?

651 1 0
1个回答

北月

webman 的路由是基于 nikic/FastRoute 实现的,下面的例子就可以匹配任意路由:

Route::any('/{path:.*}', function ($request) {
    return response('any route');
});
  • ylqjgm 2023-03-04

    非常感谢,已经解决了

年代过于久远,无法发表回答
🔝