NestJs-如何获取处理程序的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(

我想将用户重定向到服务器中的另一个url,但我不想硬编码url,如
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!',
    };
  }
}
  • 我们得到了api元数据
  • 然后是方法
  • 如果我需要的不是self-url的路径,而是其他路径,为什么它会返回api/hello 控制器的url


    这里以
    StaticController
    为例,您可以导入任何其他控制器并将其传递给
    Reflect.getMetadata(PATH\u METADATA,AnyOtherController)

    谢谢您的回答,但有一些误解:1-什么是路径?第二,如果我需要的不是自己的url路径,而是其他控制器的url路径,为什么它会返回
    api/hello
    ?好的。我明白了。我们编写“PATH”而不是PATH\u元数据。我们得到指定控制器路径和方法路径的url。然而,我认为会有NestJS的helper函数返回完整路径,而不是自己创建。谢谢lot@NursultanZarlyk,您还可以查看源代码中的
    NestJS
    实现:。有一些辅助函数