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.
Görev
Kolaydto/create-task.dto.tsiçindekiCreateTaskDto'yu doldur: birtitleve isteğe bağlı birdone.POST /tasksisteğinin gövdesi için kullan. Yeni bir görev,donedeğerini gövdeden alır; bu değer yoksafalseolur.- Önce
POST /tasksisteğ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 {}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.