NestJs - 如何获得 url 的处理程序?
NestJs - How to get url of handler?
我想将用户重定向到我服务器中的另一个 url,但我不想像 res.redirect('/hello_world')
那样硬编码 url。相反,我只想指定指定控制器的处理程序 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 元数据
- 然后是方法
Why it returns api/hello if I need a path not of self url, but other
controller's url?
这里以StaticController
为例,您可以导入任何其他控制器并传递给Reflect.getMetadata(PATH_METADATA, AnyOtherController);
我想将用户重定向到我服务器中的另一个 url,但我不想像 res.redirect('/hello_world')
那样硬编码 url。相反,我只想指定指定控制器的处理程序 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 元数据
- 然后是方法
Why it returns api/hello if I need a path not of self url, but other controller's url?
这里以StaticController
为例,您可以导入任何其他控制器并传递给Reflect.getMetadata(PATH_METADATA, AnyOtherController);