NestJs-如何获取处理程序的url?
我想将用户重定向到服务器中的另一个url,但我不想硬编码url,如NestJs-如何获取处理程序的url?,nestjs,Nestjs,我想将用户重定向到服务器中的另一个url,但我不想硬编码url,如res.redirect('/hello\u world')。相反,我只想指定指定控制器的处理程序url,如res.redirect(HelloWorldController.handlerName.url)其中HelloWorldContoller是 @Controller() export class HelloWorldController { @Get('hello_world') handlerName(
res.redirect('/hello\u world')
。相反,我只想指定指定控制器的处理程序url,如res.redirect(HelloWorldController.handlerName.url)
其中HelloWorldContoller是
@Controller()
export class HelloWorldController {
@Get('hello_world')
handlerName(): string {
return 'Hello World!';
}
}
例如,您可以使用Reflect获取如下元数据:
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!',
};
}
}
这里以
StaticController
为例,您可以导入任何其他控制器并将其传递给Reflect.getMetadata(PATH\u METADATA,AnyOtherController)代码>谢谢您的回答,但有一些误解:1-什么是路径?第二,如果我需要的不是自己的url路径,而是其他控制器的url路径,为什么它会返回api/hello
?好的。我明白了。我们编写“PATH”而不是PATH\u元数据。我们得到指定控制器路径和方法路径的url。然而,我认为会有NestJS的helper函数返回完整路径,而不是自己创建。谢谢lot@NursultanZarlyk,您还可以查看源代码中的NestJS
实现:。有一些辅助函数