我想将用户重定向到我服务器中的另一个网址,但我不想像res.redirect('/hello_world')
那样对网址进行硬编码。相反,我想只指定处理程序的指定控制器的url,如res.redirect(HelloWorldController.handlerName.url)
,其中HelloWorldContoller是
@Controller()
export class HelloWorldController {
@Get('hello_world')
handlerName(): string {
return 'Hello World!';
}
}
答案 0 :(得分:1)
例如,您可以使用反映来获取如下元数据:
import { PATH_METADATA } from '@nestjs/common/constants';
@Controller('api')
export class ApiController {
@Get('hello')
root() {
let routePath = Reflect.getMetadata(PATH_METADATA, StaticController);
routePath += '/' + Reflect.getMetadata(PATH_METADATA, StaticController.prototype.serveStatic);
console.log(routePath); will return `api/hello`
return {
message: 'Hello World!',
};
}
}
如果我需要的路径不是自我网址,而是其他路径,为什么它会返回api / hello 控制器的网址?
此处以StaticController
为例,您可以导入任何其他控制器并将其传递给Reflect.getMetadata(PATH_METADATA, AnyOtherController);