Witaj, Nest
Część sekcji TypeScript i NestJS ścieżki Node.js w Coddy. Lekcja 2 z 24.
W Express każda trasa jest funkcją, którą rejestrujesz ręcznie. NestJS przypisuje każdej części API własną klasę, a dekoratory informują Nest, do czego służy każda klasa.
@Controller('books')
export class BooksController {
@Get()
findAll() {
return [{ title: 'Dune' }];
}
}Kontroler obsługuje żądania dotyczące jednej ścieżki. @Controller('books') i @Get() to dekoratory. Dekorator zaczyna się od @ i znajduje się w wierszu nad klasą lub metodą, informując Nest, do czego ona służy. Dekoratory Nest zawsze kończą się na (), nawet jeśli nie zawierają żadnych elementów. Razem mapują findAll na GET /books, a Nest wysyła wartość zwróconą przez metodę jako JSON ze statusem 200. Nest nigdy nie wysyła żądania do metody, która nie ma dekoratora trasy.
Moduł wymienia klasy, które należą do siebie. src/main.ts wywołuje NestFactory.create(AppModule); AppModule importuje TasksModule, który wymienia TasksController. Na laptopie uruchomisz go poleceniem npm run start; tutaj robi to przycisk „Uruchom”.
W kodzie początkowym interface Task opisuje pola obiektu zadania, a Task[] oznacza tablicę takich obiektów. private sprawia, że pole pozostaje wewnątrz swojej klasy. Typ umieszczony po nawiasach metody opisuje zwracaną przez nią wartość. Te adnotacje pomagają TypeScript sprawdzać kod; dekoratory Nest definiują trasy.
Wyzwanie
ŁatwyTwój pierwszy serwer Nest ma już trzy zadania, ale żadna trasa ich jeszcze nie zwraca. Dodaj trasę, która je wyświetla.
- Otwórz
src/tasks/tasks.controller.ts. KlasaTasksControllerprzechowuje listę wthis.tasks. Umieszczone nad klasą@Controller('tasks')sprawia, że obsługuje ona ścieżki zaczynające się od/tasks. - W miejscu komentarza dodaj metodę (nazwij ją
findAll) i oznacz ją za pomocą@Get(). Zwraca onathis.tasks. Nest wysyła wartość zwracaną przez metodę jako JSON ze statusem 200. Getpochodzi z@nestjs/common, podobnie jakController. Dodaj go do importu w pierwszym wierszu.
Wypróbuj: naciśnij „Uruchom”, a następnie wyślij GET /tasks. Otrzymasz status 200 i trzy zadania:
[
{ "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 }
]Następnie wyślij GET /task, bez litery s. Żadna trasa nie pasuje do tej ścieżki, więc Nest odpowiada statusem 404:
{ "message": "Cannot GET /task", "error": "Not Found", "statusCode": 404 }Spróbuj swoich sił
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 },
];
// Dodaj tutaj metodę, która odpowiada na żądanie GET /tasks, zwracając listę.
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji TypeScript i NestJS
1Podstawy Nest
Klasy i metodyWitaj, NestRejestrowanie kontrolera4Strażnicy, filtry i interceptory
StrażnicyPoćwicz samodzielnie: Edytor online Express