Menu
CoddyTech

Merhaba, Nest

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

Express'te her rota, elle kaydettiğiniz bir fonksiyondur. NestJS, bir API'nin her bölümüne kendi sınıfını verir ve dekoratörler Nest'e her sınıfın ne yaptığını söyler.

@Controller('books')
export class BooksController {
    @Get()
    findAll() {
        return [{ title: 'Dune' }];
    }
}

Bir denetleyici, tek bir yol için gelen isteklere yanıt verir. @Controller('books') ve @Get() birer dekoratördür. Dekoratör @ ile başlar ve bir sınıfın veya metodun üzerindeki satırda yer alarak Nest'e ne işe yaradığını söyler. Nest'in dekoratörleri, içlerine hiçbir şey yazılmasa bile her zaman () ile biter. Birlikte findAll metodunu GET /books rotasına eşlerler ve Nest, metodun döndürdüğü değeri durum kodu 200 ile JSON olarak gönderir. Nest, rota dekoratörü olmayan bir metoda hiçbir zaman istek göndermez.

Bir modül, birlikte yer alan sınıfları listeler. src/main.ts, NestFactory.create(AppModule) çağrısını yapar; AppModule, TasksController sınıfını listeleyen TasksModule modülünü içe aktarır. Bir dizüstü bilgisayarda uygulamayı npm run start ile başlatırdınız; burada bunu Run yapar.

Başlangıç kodunda interface Task, bir görev nesnesinin alanlarını tanımlar ve Task[] bu nesnelerden oluşan bir dizi anlamına gelir. private, bir alanı kendi sınıfının içinde tutar. Bir metodun parantezlerinden sonra gelen tür, metodun döndürdüğü değeri tanımlar. Bu açıklamalar TypeScript'in kodunuzu denetlemesine yardımcı olur; Nest'in dekoratörleri ise rotaları tanımlar.

challenge icon

Görev

Kolay

İlk Nest sunucun zaten üç görev içeriyor, ancak henüz hiçbir rota bunları döndürmüyor. Görevleri listeleyen rotayı ekle.

  1. src/tasks/tasks.controller.ts dosyasını aç. TasksController sınıfı listeyi this.tasks içinde tutuyor. Sınıfın üzerindeki @Controller('tasks'), /tasks altındaki yolları bu sınıfın yönetmesini sağlar.
  2. Açıklama satırının olduğu yere bir metot ekle (adını findAll koy) ve bu metodu @Get() ile işaretle. this.tasks değerini döndürür. Nest, metodun döndürdüğü değeri 200 durum koduyla JSON olarak gönderir.
  3. Get, Controller gibi @nestjs/common paketinden gelir. İlk satırdaki içe aktarma ifadesine ekle.

Dene: “Oyna” düğmesine bas, ardından GET /tasks isteğini gönder. 200 yanıtı ve üç görevi alırsın:

[
  { "id": 1, "title": "Write the README", "done": true },
  { "id": 2, "title": "Fix the login bug", "done": false },
  { "id": 3, "title": "Plan the sprint", "done": false }
]

Ardından, s harfi olmadan GET /task isteğini gönder. Bu yolla eşleşen bir rota yok, bu nedenle Nest 404 yanıtı verir:

{ "message": "Cannot GET /task", "error": "Not Found", "statusCode": 404 }

Kendin dene

import { Controller } from '@nestjs/common';

interface Task {
    id: number;
    title: string;
    done: boolean;
}

@Controller('tasks')
export class TasksController {
    private tasks: Task[] = [
        { id: 1, title: 'Write the README', done: true },
        { id: 2, title: 'Fix the login bug', done: false },
        { id: 3, title: 'Plan the sprint', done: false },
    ];

    // Buraya, GET /tasks isteğine listeyle yanıt veren bir metot ekleyin.
}
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

Kendi başına pratik yap: Express playground