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.
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.