Menu
CoddyTech

DTO'lar

Coddy'nin Node.js Journey'sinin TypeScript ve NestJS bölümünün bir parçası. Ders 10 / 17.

@Body() body: { title: string } gövdeyi yalnızca tek bir yerde tanımlar ve hiçbir şey doğrulamaz: { "title": 42 } doğrudan geçer. Bir veri aktarım nesnesi olan DTO, istek gövdesinin neler içerdiğini tanımlayan bir sınıftır.

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

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

express? isteğe bağlı bir alanı belirtir. Denetleyici ve hizmet aynı sınıfı paylaştığından, alanların yapısı konusunda anlaşırlar.

DTO'nun bir arayüz değil de sınıf olmasının bir nedeni vardır. Kod çalışırken arayüzler diğer türlerle birlikte kaldırılır; sınıf ise varlığını sürdürür ve yalnızca bir sınıftaki class-validator dekoratörleri, çalışma zamanında bir gövdeyi doğrulayabilir. Sıradaki dersin konusu budur.

challenge icon

Görev

Kolay
  • dto/create-task.dto.ts içindeki CreateTaskDto'yu doldur: bir title ve isteğe bağlı bir done.
  • POST /tasks isteğinin gövdesi için kullan. Yeni bir görev, done değerini gövdeden alır; bu değer yoksa false olur.
  • Önce POST /tasks isteğini { "title": "Pay rent", "done": true } ile, ardından { "title": 42 } ile gönder.

Kendin dene

// POST /tasks isteğinin gövdesini tanımla: title ve istemci gönderdiğinde done.
export class CreateTaskDto {}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

TypeScript ve NestJS bölümündeki tüm dersler