Spis treści
Dekoratory to specjalne funkcje, które są używane do modyfikowania innych elementów programu, takich jak klasy, metody lub właściwości. W NestJS, dekoratory są używane do konfigurowania różnych aspektów aplikacji, takich jak kontrolery, serwisy i nie tylko.
Jednym z przykładów użycia dekoratorów w NestJS jest oznaczanie klasy jako kontrolera. Można to zrobić za pomocą dekoratora @Controller:
import { Controller } from '@nestjs/common';
@Controller('users')
export class UsersController {
// metody kontrolera
}
Można również użyć dekoratorów do oznaczenia metod kontrolera jako odpowiedzi na żądania HTTP. Na przykład, dekorator @Get służy do oznaczenia metody jako odpowiedzi na żądanie typu GET:
import { Get, Controller } from '@nestjs/common';
@Controller('users')
export class UsersController {
@Get()
getAllUsers() {
// kod obsługujący żądanie GET
}
}
Jak łączyć dekoratory w Nest.JS?
Możesz również łączyć dekoratory, aby uzyskać bardziej złożone funkcjonalności. Na przykład, jeśli chcesz oznaczyć metodę jako odpowiedzi na żądanie typu GET z określonym parametrem, możesz użyć dekoratora @Param w połączeniu z @Get:
import { Get, Controller, Param } from '@nestjs/common';
@Controller('users')
export class UsersController {
@Get(':id')
getUser(@Param('id') id: string) {
// kod obsługujący żądanie GET z parametrem id
}
}
Jak stworzyć własne dekoratory w Nest.JS?
Spróbuj też stworzyć własne dekoratory w NestJS. Aby to zrobić, musisz utworzyć funkcję dekoratora i użyć dekoratora @Injectable() do oznaczenia jej jako serwisu, który może być wstrzykiwany przez DI:
import { Injectable, SetMetadata } from '@nestjs/common';
export const Role = (
Przydatne dekoratory w Nest.JS
W NestJS istnieje wiele przydatnych dekoratorów, które można użyć do konfigurowania różnych aspektów aplikacji. Oto kilka przykładów:
@Controller: służy do oznaczania klasy jako kontrolera, który obsługuje żądania HTTP.
@Get, @Post, @Put, @Delete: służą do oznaczania metod kontrolera jako odpowiedzi na odpowiednie żądania HTTP.
@Body: służy do oznaczenia argumentu metody jako ciała żądania HTTP.
@Param: służy do oznaczenia argumentu metody jako parametru żądania HTTP.
@Query: służy do oznaczenia argumentu metody jako parametru zapytania żądania HTTP.
@Header: służy do oznaczenia argumentu metody jako nagłówka żądania HTTP.
@UsePipes: służy do oznaczenia metody lub kontrolera jako punktu, w którym ma zostać użyta rura (ang. pipe). Rury służą do walidacji lub transformacji danych wejściowych lub wyjściowych.
@UseGuards: służy do oznaczenia metody lub kontrolera jako punktu, w którym ma zostać użyty strażnik (ang. guard). Strażnicy służą do sprawdzania uprawnień lub autentykacji przed wykonaniem metody. Oprócz tych dekoratorów, w NestJS istnieje również wiele innych przydatnych dekoratorów, takich jak @Inject, @Injectable, @OnModuleInit itp.
Warto przejrzeć dokumentację NestJS, aby zobaczyć pełną listę dostępnych dekoratorów.