在我的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
开始提供有角度的应用程序
答案 0 :(得分:1)
您可以使用路径@Get('/?*')
来匹配所有路由。
Nest使用util函数validatePath()
来构建路径。当您有前缀(在您的情况下为admin
)时,除非第一个字符已经是/
,否则nest总是在前缀和路由装饰器的路径之间添加/
。
export const validatePath = (path?: string): string =>
path
? path.charAt(0) !== '/' ? '/' + path : path
: '';
因此,要表达的路径将是admin/?*
,它与以admin
开头的任何路径都匹配。 小心,其中还包括adminarea/1
!