【问题标题】:NestJS mvc + API dynamic renderingNestJS mvc + API 动态渲染
【发布时间】:2021-11-25 01:10:32
【问题描述】:

我刚开始使用 NestJS,想知道是否可以根据标头 Accept 值将响应动态呈现为 JSON 或 HBS 模板。

我有一个使用 NestJS 构建的后端,提供纯 REST API,现在我还想为相同的控制器方法呈现 HBS 模板。类似于以下内容,但采用了更好、更简洁的方法。

@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 },
  );
}

【问题讨论】:

    标签: javascript nestjs


    【解决方案1】:

    你总是可以用三元运算符做到这一点:

    const products = await this.productsService.getAll();
    return headers.accept === "accept/json" ? products : res.render(this.appService.getViewName(), {products});
    
    

    【讨论】:

    • 这不是一个更干净的解决方案,假设您的整个项目控制器方法最后一行是if else ternary operator 条件。
    • @nick 我当时误解了你的问题。您可能可以为此创建一个构建器,然后根据需要传递它。您在这里有一个 JS 中的构建器模式示例 -> zetcode.com/javascript/builderpattern
    猜你喜欢
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多