【问题标题】:@Get('*') doesn't match empty (NestJS)@Get('*') 不匹配空(NestJS)
【发布时间】:2019-06-30 18:40:30
【问题描述】:

在我的 Nest 后端中,我正在尝试匹配我的控制器中的 url

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

这应该与以下网址匹配:

/admin
/admin/
/admin/anything

但是,上面得到的@Get('*')/admin 不匹配。我应该使用@Get() 添加其他路线还是有解决办法?

我需要这个,因为我必须提供来自 /admin 的 Angular 应用程序

【问题讨论】:

    标签: javascript node.js typescript routing nestjs


    【解决方案1】:

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

    为什么会这样?

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

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

    所以给出的路径是admin/?*,它匹配任何以admin开头的路径。 小心,这也包括例如adminarea/1!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 2021-07-01
      相关资源
      最近更新 更多