【问题标题】:Two endpoints for same controller (route aliases) in NestJSNestJS 中同一控制器(路由别名)的两个端点
【发布时间】:2021-02-01 17:30:39
【问题描述】:

我想将实体名称从 Person 更改为 Individual。我想保留旧的/person 端点(为了临时向后兼容)并添加一个新的/individual 端点。

在 Node.js 中使用 Nest 最简单的方法是什么?

我可以复制代码,但我希望有一个不需要复制的更好的解决方案

【问题讨论】:

    标签: node.js typescript nestjs


    【解决方案1】:

    @Controller() 装饰器接受一个前缀数组,因此你可以这样使用:

    import { Controller, Get } from '@nestjs/common';
    
    @Controller(['person', 'individual'])
    export class IndividualController {
      @Get()
      findAll(): { /* ... */ }
    }
    

    对我来说这是最简单的方法。

    source

    【讨论】:

    • 这正是我所需要的,但似乎我使用的是旧版本的 Nest。你用的是什么版本?
    • 这个功能是在Nestjs v6添加的
    • 谢谢@Micael Levi
    【解决方案2】:

    如果您的意思是 expressjs 而不是 jestjs(这是一个测试框架),我的方法如下:

    只需将您的控制器代码排除在一个函数中并将其传递给您的路由。

    // your controller code
    const doSomethingWithPersonEntity = (req, res, next) => {
       res.status(200).json(persons);
    }
    
    router.get("/person", doSomethingWithPersonEntity);
    router.get("/individual", doSomethingWithPersonEntity);
    

    【讨论】:

    • 感谢您的回答,并为我的困惑感到抱歉:) 我的意思是 NestJS。多亏了你修复了主题
    猜你喜欢
    • 2022-11-23
    • 2014-10-07
    • 2014-12-15
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    相关资源
    最近更新 更多