Menu
CoddyTech

DTOs

Termasuk bagian TypeScript dan NestJS dalam perjalanan Node.js di Coddy. Pelajaran 10 dari 17.

@Body() body: { title: string } menjelaskan body hanya di satu tempat, dan tidak ada yang memeriksanya: { "title": 42 } langsung diteruskan. DTO, yaitu object transfer data, adalah class yang menjelaskan isi body permintaan.

export class CreateOrderDto {
    customer: string;
    express?: boolean;
}

@Post()
create(@Body() dto: CreateOrderDto) {
    return this.ordersService.create(dto);
}

express? menandai field opsional. Controller dan service menggunakan class yang sama, sehingga keduanya menyepakati bentuknya.

DTO berupa class, bukan interface, karena suatu alasan. Interface dihapus bersama tipe lainnya saat kode dijalankan, sedangkan class tetap ada. Hanya decorator class-validator pada class yang dapat memeriksa body saat program berjalan. Itu akan dibahas di pelajaran berikutnya.

challenge icon

Tantangan

Mudah
  • Isi CreateTaskDto di dto/create-task.dto.ts: title, dan done yang opsional.
  • Gunakan untuk body POST /tasks. Tugas baru mengambil done dari body, dengan nilai false jika tidak ada.
  • Kirim POST /tasks dengan { "title": "Pay rent", "done": true }, lalu dengan { "title": 42 }.

Coba sendiri

// Jelaskan isi POST /tasks: title, serta done jika dikirim oleh client.
export class CreateTaskDto {}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di TypeScript dan NestJS

Latihan sendiri: Playground Express