簡體   English   中英

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

[英]@Get('*') doesn't match empty (NestJS)

在我的 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提供一個有角度的應用程序

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

為什么這樣做?

Nest 使用 util 函數validatePath()來構建路徑。 當你有一個前綴( admin你的情況),然后窩總會添加/從你的路線裝飾前綴和路徑之間,除非第一個字符已經是一個/

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

因此,提供給 express 的路徑將是admin/?* ,它匹配以admin開頭的任何路徑。 小心,這也包括例如adminarea/1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM