Halo, Nest
Termasuk bagian TypeScript dan NestJS dalam perjalanan Node.js di Coddy. Pelajaran 2 dari 24.
Di Express, setiap rute adalah fungsi yang kamu daftarkan secara manual. NestJS memberi setiap bagian API class-nya sendiri, dan dekorator memberi tahu Nest fungsi setiap class.
@Controller('books')
export class BooksController {
@Get()
findAll() {
return [{ title: 'Dune' }];
}
}Controller menangani permintaan untuk satu jalur. @Controller('books') dan @Get() adalah dekorator. Dekorator diawali dengan @ dan berada di baris di atas class atau method, untuk memberi tahu Nest kegunaannya. Dekorator Nest selalu diakhiri dengan (), meskipun tidak ada isinya. Secara bersamaan, dekorator tersebut memetakan findAll ke GET /books, dan Nest mengirimkan hasil yang dikembalikan method sebagai JSON dengan status 200. Nest tidak pernah mengirim permintaan ke method yang tidak memiliki dekorator rute.
Sebuah module mencantumkan class yang saling berkaitan. src/main.ts memanggil NestFactory.create(AppModule); AppModule mengimpor TasksModule, yang mencantumkan TasksController. Di laptop, kamu dapat menjalankannya dengan npm run start; di sini, tombol Jalankan yang akan melakukannya.
Di kode awal, interface Task menjelaskan field dari object task, dan Task[] berarti array yang berisi object tersebut. private menjaga sebuah field tetap berada di dalam class-nya. Tipe setelah tanda kurung method menjelaskan nilai yang dikembalikannya. Anotasi ini membantu TypeScript memeriksa kodemu; dekorator Nest menentukan rutenya.
Tantangan
MudahServer Nest pertamamu sudah menyimpan tiga tugas, tetapi belum ada route yang mengembalikannya. Tambahkan route yang menampilkan daftar tugas tersebut.
- Buka
src/tasks/tasks.controller.ts. ClassTasksControllermenyimpan daftar dithis.tasks.@Controller('tasks')di atas class membuatnya menangani path di bawah/tasks. - Di tempat komentar berada, tambahkan method (beri nama
findAll) dan tandai dengan@Get(). Method ini mengembalikanthis.tasks. Nest mengirimkan nilai yang dikembalikan method sebagai JSON, dengan status 200. Getberasal dari@nestjs/common, sepertiController. Tambahkan ke import di baris pertama.
Coba: tekan Jalankan, lalu kirim GET /tasks. Kamu akan mendapat 200 dan tiga tugas:
[
{ "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 }
]Lalu kirim GET /task, tanpa s. Tidak ada route yang cocok dengan path tersebut, jadi Nest merespons dengan 404:
{ "message": "Cannot GET /task", "error": "Not Found", "statusCode": 404 }Coba sendiri
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 },
];
// Tambahkan method di sini yang merespons GET /tasks dengan list tersebut.
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di TypeScript dan NestJS
1Dasar-Dasar Nest
class dan methodHalo, NestMendaftarkan Controller4Guard, Filter, dan Interceptor
GuardLatihan sendiri: Playground Express