Apakah mungkin untuk menentukan beberapa penangan untuk ROUTE yang sama?

Setiap permintaan HTTP GET ke /test route harus memanggil handler get kecuali string kueri watch === '1' dalam hal ini seharusnya memanggil handler jam.

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

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

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

Karena kerangka kerja tampaknya tidak mendukung ini, saya berharap dapat menulis dekorator untuk mengabstraksi logika ini.

Yaitu.

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'
  }
}

Bisakah ini dilakukan? Adakah yang bisa mengarahkan saya ke arah yang benar?

Salam, Davide

0
Davide Talesco 11 Desember 2019, 18:23

1 menjawab

Jawaban Terbaik

Saya akan mencoba menjaga kompleksitasnya tetap rendah dan hanya mengimplementasikan dua fungsi.

@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.'
         }
}
1
JWo 12 Desember 2019, 15:06