javascript - @Get ('*' ) 不匹配空 (NestJS)

标签 javascript node.js typescript routes nestjs

在我的 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/

相关文章:

javascript - 原型(prototype)无法在网络 worker 中工作

node.js - 尝试发出 POST 请求来注册新用户时出现 404 错误

Node.js - MJPEG TCP 流到 base64 图像

javascript - 要求未在脚本标记中定义

typescript - 运行 typescript 文件显示错误消息为 TS2304 : Cannot find name 'PropertyKey' & Error TS2339

javascript - 在 Three.js 中制作菜单

javascript - 在多个选择框 JQuery 上动态生成 URL

javascript - 以 Angular 添加样式

javascript - 维基百科 (API) "List_of"页面内容 - 解析为 JSON

javascript - 如何在 Angular 6 中实现选择下拉列表(按搜索过滤),如何按名称属性过滤对象