DTO
Część sekcji TypeScript i NestJS ścieżki Node.js w Coddy. Lekcja 10 z 17.
@Body() body: { title: string } opisuje treść żądania tylko w jednym miejscu i nic jej nie sprawdza: { "title": 42 } przechodzi bezpośrednio. DTO, czyli obiekt transferu danych, to klasa opisująca zawartość treści żądania.
export class CreateOrderDto {
customer: string;
express?: boolean;
}
@Post()
create(@Body() dto: CreateOrderDto) {
return this.ordersService.create(dto);
}express? oznacza opcjonalne pole. Kontroler i serwis współdzielą tę klasę, więc zgadzają się co do struktury danych.
DTO jest klasą, a nie interfejsem, z konkretnego powodu. Interfejsy są usuwane wraz z innymi typami podczas uruchamiania kodu, natomiast klasa nadal istnieje, a treść żądania mogą sprawdzać w czasie działania tylko dekoratory class-validator umieszczone na klasie. To temat następnej lekcji.
Wyzwanie
Łatwy- Uzupełnij
CreateTaskDtowdto/create-task.dto.ts: otitleoraz opcjonalnedone. - Użyj go jako treści żądania
POST /tasks. Nowe zadanie pobieradonez treści żądania, a jeśli go tam nie ma, przyjmuje wartośćfalse. - Wyślij
POST /tasksz{ "title": "Pay rent", "done": true }, a następnie z{ "title": 42 }.
Spróbuj swoich sił
// Opisz treść żądania POST /tasks: title oraz done, jeśli klient je przesyła.
export class CreateTaskDto {}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.