Jean Lambert
Jean Lambert

Reputation: 141

Override NestJS route within controller

I want to completely override a controller route. E. g:

@Controller('shipments')
export class ShipmentsController {

  @Post('/create')
  async find(): Promise<Activities> {
    return service.find()
  }
}

In order to make a request to the previous example, The URL will be: http://localhost:8080/shipments/create

I want to change that URL without moving the controller to another class. For example, I want the URL for that specific function to be http://localhost:8080/whatever/i/want.

Is this possible?

Upvotes: 2

Views: 3575

Answers (1)

Jay McDoniel
Jay McDoniel

Reputation: 70101

This is not possible, and goes against the ideas of the framework of having easy to configure routes with structure and uniformity. If you want a route like that, you can use express on it;s own, or technically add the route in the bootstrap file like so

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

But now you don't have (easy) access to services, testing this is a pain, and generally it's confusing, not to mention no use of any Nest enhancers like interceptors or pipes.

Upvotes: 5

Related Questions