在nestjs中是否可以为同一个ROUTE指定多个处理程序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在nestjs中是否可以为同一个ROUTE指定多个处理程序?相关的知识,希望对你有一定的参考价值。

是否可以为同一ROUTE指定多个处理程序?

对/ test路由的任何HTTP GET请求都应调用get处理程序,除非查询字符串watch ==='1',在这种情况下,它应改为调用监视处理程序。

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

@Controller('test')
export class TestController {
  @Get()
  get(){
    return 'get'
  }

  @Get('?watch=1')
  watch(){
    return 'get with watch param'
  }
}

由于该框架似乎不支持此功能,所以我希望能够编写一个装饰器来抽象该逻辑。

import { Controller, Get } from '@nestjs/common';
import { Watch } from './watch.decorator';

@Controller('test')
export class TestController {
  @Get()
  get(){
    return 'get'
  }

  @Watch()
  watch(){
    return 'get with watch param'
  }
}

可以这样做吗?谁能指出我正确的方向?

关于,戴维德

答案
@Controller('test') export class TestController { myService: MyService = new MyService(); @Get() get(@Query('watch') watch: number){ if(watch) { return myService.doSomethingB(watch); } else { return myService.doSomethingA(); } } } export class MyService { doSomethingA(): string { return 'Do not watch me.' } doSomethingB(watch: number): string { return 'Watch me for ' + watch + ' seconds.' } }

以上是关于在nestjs中是否可以为同一个ROUTE指定多个处理程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NestjS 中使用可选的 url 参数

NestJS - 默认(通配符)路由?

Axios.all 在 Nestjs 中可用吗?

NestJS“获得”多个参数

是否可以在 NestJs 中为 DTO 进行继承?

如何使用返回多个项目的 TypeORM 设置 Nestjs 查询?