@Get ('*') не соответствует пустому (NestJS) - PullRequest
0 голосов
/ 06 февраля 2019

В моем бэкэнде Nest я пытаюсь сопоставить URL в моем контроллере

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

Это должно соответствовать следующим URL:

/admin
/admin/
/admin/anything

Однако, вышеприведенное get @Get('*') не соответствует /admin.Должен ли я добавить другой маршрут с @Get() или есть исправление для этого?

Мне это нужно, потому что я должен обслуживать угловое приложение от /admin

1 Ответ

0 голосов
/ 07 февраля 2019

Вы можете использовать путь @Get('/?*') для сопоставления со всеми маршрутами.

Почему это работает?

Nest использует функцию util validatePath() для построениядорожка.Если у вас есть префикс (admin в вашем случае), то гнездо всегда будет добавлять / между префиксом и путем от вашего декоратора маршрута, если только первый символ не является /.

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

Таким образом, путь к выражению будет admin/?*, что соответствует любому пути, начинающемуся с admin. Осторожно , включая, например, adminarea/1!

...