覆盖控制器内的 NestJS 路由

Jea*_*ert 1 node.js nestjs

我想完全覆盖控制器路线。例如:

@Controller('shipments')
export class ShipmentsController {

  @Post('/create')
  async find(): Promise<Activities> {
    return service.find()
  }
}
Run Code Online (Sandbox Code Playgroud)

为了向前面的示例发出请求,URL 将为:http://localhost:8080/shipments/create

我想更改该 URL,而不将控制器移动到另一个类。例如,我希望该特定函数的 URL 为 http://localhost:8080/whatever/i/want。

这可能吗?

Jay*_*iel 5

这是不可能的,并且违背了框架易于配置具有结构和一致性的路由的思想。如果您想要这样的路线,您可以使用它自己的express,或者从技术上将路线添加到引导文件中,如下所示

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.getHttpServer().get('/whatever/you/want', (req, res, next) => {});
  await app.listen(3000);
}
Run Code Online (Sandbox Code Playgroud)

但现在您无法(轻松)访问服务,测试这是一件痛苦的事情,而且通常很令人困惑,更不用说不使用任何 Nest 增强器(如拦截器或管道)。