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.
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.
src/tasks/tasks.controller.tsdosyasını aç.TasksControllersınıfı listeyithis.tasksiçinde tutuyor. Sınıfın üzerindeki@Controller('tasks'),/tasksaltındaki yolları bu sınıfın yönetmesini sağlar.- Açıklama satırının olduğu yere bir metot ekle (adını
findAllkoy) ve bu metodu@Get()ile işaretle.this.tasksdeğerini döndürür. Nest, metodun döndürdüğü değeri 200 durum koduyla JSON olarak gönderir. Get,Controllergibi@nestjs/commonpaketinden 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.
}
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
1Nest Temelleri
Sınıflar ve MetotlarMerhaba, NestBir Controller Kaydetme4Guard’lar, Filtreler, Interceptor’lar
Guard’larKendi başına pratik yap: Express playground