Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy
  • Uzupełnij CreateTaskDto w dto/create-task.dto.ts: o title oraz opcjonalne done.
  • Użyj go jako treści żądania POST /tasks. Nowe zadanie pobiera done z treści żądania, a jeśli go tam nie ma, przyjmuje wartość false.
  • Wyślij POST /tasks z { "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 {}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji TypeScript i NestJS