@Get('*')不匹配为空(NestJS)

时间:2019-02-06 18:05:06

标签: javascript node.js typescript routing nestjs

在我的Nest后端中,我试图匹配控制器中的网址

@Controller('admin')
export class AdminController {
    @Get('*') 
    getAdminB(@Res() response): void {
        response.sendFile(path.resolve('./public/admin/index.html'));
    }
}

这应与以下URL匹配:

/admin
/admin/
/admin/anything

但是,以上获取@Get('*')/admin不匹配。我应该使用@Get()添加其他路线还是对此进行修复?

我需要这个,因为我必须从/admin开始提供有角度的应用程序

1 个答案:

答案 0 :(得分:1)

您可以使用路径@Get('/?*')来匹配所有路由。

为什么行得通?

Nest使用util函数validatePath()来构建路径。当您有前缀(在您的情况下为admin)时,除非第一个字符已经是/,否则nest总是在前缀和路由装饰器的路径之间添加/

export const validatePath = (path?: string): string =>
  path
    ? path.charAt(0) !== '/' ? '/' + path : path
    : '';

因此,要表达的路径将是admin/?*,它与以admin开头的任何路径都匹配。 小心,其中还包括adminarea/1