I just started with NestJS and wanted to know if it is possible to dynamically render a response either as JSON or HBS template based on the header Accept value.
I have a backend built using NestJS serving pure REST APIs, now I also want to render HBS templates for the same controller methods. Something like the following, but with a better, cleaner approach.
@Get()
async getAll(@Headers() headers, @Res() res: Response): Promise<Pattern[]> {
const products = await this.productsService.getAll();
if(headers.accept === "accept/json"){
return products;
}
return res.render(
this.appService.getViewName(),
{ products },
);
}
You can always do it with ternary operator:
const products = await this.productsService.getAll();
return headers.accept === "accept/json" ? products : res.render(this.appService.getViewName(), {products});