在我的 Nest 后端中,我试图在我的 Controller 中匹配一个 url
@Controller('admin')
export class AdminController {
@Get('*')
getAdminB(@Res() response): void {
response.sendFile(path.resolve('./public/admin/index.html'));
}
}
这应该匹配以下 URLS:
/admin
/admin/
/admin/anything
但是上面的get @Get('*')
不匹配/admin
。我应该使用 @Get()
添加其他路由还是有解决办法?
我需要这个,因为我必须从 /admin
提供一个 Angular 应用程序
最佳答案
您可以使用路径@Get('/?*')
来匹配所有路由。
为什么会这样?
Nest 使用 util 函数 validatePath()
构建路径。当您有前缀(在您的情况下为 admin
)时, nest 将始终在前缀和路由装饰器的路径之间添加 /
,除非第一个字符已经是/
.
export const validatePath = (path?: string): string =>
path
? path.charAt(0) !== '/' ? '/' + path : path
: '';
因此,指定给 express 的路径将是 admin/?*
,它匹配任何以 admin
开头的路径。 注意,这还包括例如adminarea/1
!
关于javascript - @Get ('*' ) 不匹配空 (NestJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54559926/