Study
NestJS

Providers & Services

Penjelasan

NestJS mendorong pemisahan tegas: Controller HANYA menangani HTTP (terima request, kirim response), logika bisnis sesungguhnya ditulis di class Service ditandai @Injectable(). Service di-inject ke Controller lewat constructor, NestJS otomatis menyediakan instance-nya berkat Dependency Injection bawaan.

Contoh Konsep

// produk.service.ts
import { Injectable } from '@nestjs/common';

@Injectable()
export class ProdukService {
    private produk = [{ id: 1, nama: 'Kaos' }];

    findAll() {
        return this.produk;
    }
}

// produk.controller.ts
import { Controller, Get } from '@nestjs/common';
import { ProdukService } from './produk.service';

@Controller('produk')
export class ProdukController {
    constructor(private produkService: ProdukService) {}

    @Get()
    findAll() {
        return this.produkService.findAll();
    }
}

Praktikum

Buat ArtikelService dengan array artikel di memori dan method findAll() yang mengembalikannya. Inject service itu ke ArtikelController lewat constructor, panggil di method findAll() Controller.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Service yang di-inject lewat constructor OTOMATIS jadi SINGLETON per module (instance yang sama dipakai berulang) — kamu tidak perlu membuat instance manual dengan new ProdukService(), NestJS Dependency Injection yang menanganinya di balik layar.