Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Server Nest pertamamu sudah menyimpan tiga tugas, tetapi belum ada route yang mengembalikannya. Tambahkan route yang menampilkan daftar tugas tersebut.

  1. Buka src/tasks/tasks.controller.ts. Class TasksController menyimpan daftar di this.tasks. @Controller('tasks') di atas class membuatnya menangani path di bawah /tasks.
  2. Di tempat komentar berada, tambahkan method (beri nama findAll) dan tandai dengan @Get(). Method ini mengembalikan this.tasks. Nest mengirimkan nilai yang dikembalikan method sebagai JSON, dengan status 200.
  3. Get berasal dari @nestjs/common, seperti Controller. 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.
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di TypeScript dan NestJS

Latihan sendiri: Playground Express