typescript NestJS中同一控制器(路由别名)的两个端点

szqfcxe2  于 2022-11-26  发布在  TypeScript
关注(0)|答案(3)|浏览(212)

我要将实体名称从Person变更为Individual。我要保留旧的/person端点(为了暂时回溯相容性),并新增/individual端点。
在Node.js中使用Nest进行此操作的最简单方法是什么?
我可以复制代码,但我希望有一个更好的解决方案,不需要重复

ev7lccsx

ev7lccsx1#

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

import { Controller, Get } from '@nestjs/common';

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

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

rkkpypqq

rkkpypqq2#

如果您指的是expressjs而不是jestjs(它是一个测试框架),我的方法将如下:
只需将控制器代码排除到函数中并将其传递给路由。

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

router.get("/person", doSomethingWithPersonEntity);
router.get("/individual", doSomethingWithPersonEntity);
nuypyhwy

nuypyhwy3#

在NestJS中,我们可以为整个控制器或单个路由设置多个路由。这支持所有HTTP方法(POST、GET、PATCH等)

@Controller(['route-1', 'route-2'])
export class IndividualController {

  @Get(['/sub-route-1','/sub-route-2'])
  public async getSomething(...){...}

所有的HTTP方法都支持单个字符串路由或字符串路由数组。我们可以使用这种技术来弃用一个坏的路由,并开始引入一个更好的路由,而不会立即破坏消费者。

相关问题