Study
NestJS

Request Body: @Body dan DTO

Penjelasan

@Body() mengambil SELURUH body request (JSON), atau @Body('nama') untuk satu field spesifik. Konvensi NestJS: bentuk body request didefinisikan sebagai class terpisah disebut DTO (Data Transfer Object, biasa disimpan di file dto/create-produk.dto.ts) — memberi type-safety TypeScript penuh untuk data yang masuk.

Contoh Konsep

// dto/create-produk.dto.ts
export class CreateProdukDto {
    nama: string;
    harga: number;
}

// produk.controller.ts
import { Controller, Post, Body } from '@nestjs/common';
import { CreateProdukDto } from './dto/create-produk.dto';

@Controller('produk')
export class ProdukController {
    @Post()
    create(@Body() dto: CreateProdukDto) {
        return `Produk ${dto.nama} dengan harga ${dto.harga} berhasil dibuat`;
    }
}

Praktikum

Buat class CreateArtikelDto dengan properti judul (string) dan isi (string). Buat method create(@Body() dto: CreateArtikelDto) di ArtikelController yang mengembalikan "Artikel {dto.judul} tersimpan".

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

DTO cuma memberi type-checking di level KODE TypeScript (compile-time) — TIDAK otomatis memvalidasi data di RUNTIME kalau body request sebenarnya tidak sesuai bentuknya. Untuk validasi runtime sungguhan, DTO perlu dikombinasikan dengan ValidationPipe dan class-validator, dibahas di materi berikutnya.