Ubah Karier Anda: Pelajari NestJS untuk Backend yang Andal!

Ubah karier Anda dengan mempelajari NestJS! Temukan bagaimana framework ini dapat menjadi solusi backend yang andal dan tingkatkan peluang karier Anda. Jangan lewatkan kesempatan emas ini!

By WGS INDONESIA
4.9/4.9
Indonesia
Rp 43,750.00 GRATIS
E-COURSE banner with text and icons representing Artificial Intelligence and video learning

Detail Pembelajaran

Ubah Karier Anda: Pelajari NestJS untuk Backend yang Andal!
  • Pengembangan Karier, Teknologi Backend, Pemrograman, NestJS, Pembelajaran Online

Baca Online

Ubah Karier Anda: Pelajari NestJS untuk Backend yang Andal!

Daftar Isi

  1. Pengantar NestJS
  2. Persiapan Lingkungan Pengembangan
  3. Struktur Proyek NestJS
  4. Membuat Modul dan Controller
  5. Membuat Service untuk Logika Bisnis
  6. Routing dan Request Handling
  7. Integrasi Database dengan TypeORM
  8. Autentikasi dan Autorisasi
  9. Testing di NestJS
  10. Deploy Aplikasi NestJS
  11. Sumber Belajar dan Source Code

1. Pengantar NestJS

NestJS adalah framework backend progresif untuk membangun aplikasi server-side yang efisien, dapat diskalakan, dan mudah dipelihara menggunakan TypeScript. NestJS menggabungkan konsep terbaik dari OOP (Object Oriented Programming), FP (Functional Programming), dan FRP (Functional Reactive Programming).

Logo NestJS dengan diagram arsitektur backend yang menunjukkan modul, controller, dan service

Dengan NestJS, Anda dapat membangun REST API, GraphQL API, microservices, dan banyak lagi dengan struktur yang jelas dan modular.

2. Persiapan Lingkungan Pengembangan

Sebelum mulai coding, pastikan Anda sudah menginstal beberapa tools berikut:

  • Node.js (versi 16 atau lebih baru)
  • npm atau yarn sebagai package manager
  • Editor kode seperti Visual Studio Code
  • Postman atau Insomnia untuk testing API

Untuk menginstal NestJS CLI, jalankan perintah berikut di terminal:

npm i -g @nestjs/cli
      

Setelah itu, buat proyek baru dengan perintah:

nest new nama-proyek-anda
      

Ikuti instruksi di terminal untuk memilih package manager dan konfigurasi awal.

3. Struktur Proyek NestJS

Setelah membuat proyek, Anda akan melihat struktur folder seperti ini:

src/
├── app.controller.ts
├── app.module.ts
├── app.service.ts
├── main.ts
test/
node_modules/
package.json
tsconfig.json

      

Penjelasan singkat:

  • app.module.ts : Modul utama aplikasi
  • app.controller.ts : Controller untuk menangani request
  • app.service.ts : Service untuk logika bisnis
  • main.ts : Entry point aplikasi

4. Membuat Modul dan Controller

Modul adalah unit utama dalam NestJS yang mengelompokkan controller dan service. Untuk membuat modul baru, gunakan CLI:

nest generate module users

Untuk membuat controller:

nest generate controller users

Contoh kode controller sederhana:

import { Controller, Get } from '@nestjs/common';

@Controller('users')
export class UsersController {
  @Get()
  findAll() {
    return 'Ini adalah daftar semua user';
  }
}

Controller ini akan merespon GET request ke /users dengan string sederhana.

5. Membuat Service untuk Logika Bisnis

Service berisi logika bisnis dan dapat digunakan oleh controller. Buat service dengan CLI:

nest generate service users

Contoh service sederhana:

import { Injectable } from '@nestjs/common';

@Injectable()
export class UsersService {
  private readonly users = [{ id: 1, name: 'Budi' }, { id: 2, name: 'Sari' }];

  findAll() {
    return this.users;
  }
}

Hubungkan service ke controller:

import { Controller, Get } from '@nestjs/common';
import { UsersService } from './users.service';

@Controller('users')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

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

6. Routing dan Request Handling

NestJS menggunakan decorator untuk routing. Contoh beberapa method HTTP:

  • @Get() untuk GET request
  • @Post() untuk POST request
  • @Put() untuk PUT request
  • @Delete() untuk DELETE request

Contoh controller dengan berbagai method:

import { Controller, Get, Post, Put, Delete, Body, Param } from '@nestjs/common';

@Controller('products')
export class ProductsController {
  @Get()
  findAll() {
    return 'Daftar produk';
  }

  @Get(':id')
  findOne(@Param('id') id: string) {
    return `Produk dengan id ${id}`;
  }

  @Post()
  create(@Body() createProductDto: any) {
    return 'Produk dibuat';
  }

  @Put(':id')
  update(@Param('id') id: string, @Body() updateProductDto: any) {
    return `Produk dengan id ${id} diperbarui`;
  }

  @Delete(':id')
  remove(@Param('id') id: string) {
    return `Produk dengan id ${id} dihapus`;
  }
}

7. Integrasi Database dengan TypeORM

NestJS mendukung berbagai ORM, salah satunya TypeORM. Berikut langkah integrasi dengan database PostgreSQL:

  1. Install package yang dibutuhkan:
    npm install --save @nestjs/typeorm typeorm pg
              
  2. Konfigurasi module database di app.module.ts :
    import { TypeOrmModule } from '@nestjs/typeorm';
    
    @Module({
      imports: [
        TypeOrmModule.forRoot({
          type: 'postgres',
          host: 'localhost',
          port: 5432,
          username: 'postgres',
          password: 'password',
          database: 'nestjsdb',
          entities: [__dirname + '/**/*.entity{.ts,.js}'],
          synchronize: true,
        }),
      ],
    })
    export class AppModule {}
    
              
  3. Buat entity untuk tabel database, contoh user.entity.ts :
    import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
    
    @Entity()
    export class User {
      @PrimaryGeneratedColumn()
      id: number;
    
      @Column()
      name: string;
    
      @Column()
      email: string;
    }
    
              
  4. Gunakan repository di service untuk operasi CRUD.

8. Autentikasi dan Autorisasi

NestJS menyediakan modul @nestjs/passport dan passport untuk autentikasi. Contoh implementasi JWT:

  1. Install dependencies:
    npm install --save @nestjs/jwt @nestjs/passport passport passport-jwt bcryptjs
              
  2. Buat modul Auth dan konfigurasi JWT strategy.
  3. Gunakan guard @UseGuards(AuthGuard('jwt')) untuk melindungi route.

Contoh potongan kode strategi JWT:

import { Injectable } from '@nestjs/common';
import { PassportStrategy } from '@nestjs/passport';
import { ExtractJwt, Strategy } from 'passport-jwt';

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
  constructor() {
    super({
      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
      ignoreExpiration: false,
      secretOrKey: 'secretKey',
    });
  }

  async validate(payload: any) {
    return { userId: payload.sub, username: payload.username };
  }
}

9. Testing di NestJS

NestJS menggunakan Jest sebagai framework testing default. Contoh unit test untuk service:

import { Test, TestingModule } from '@nestjs/testing';
import { UsersService } from './users.service';

describe('UsersService', () => {
  let service: UsersService;

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      providers: [UsersService],
    }).compile();

    service = module.get(UsersService);
  });

  it('should return all users', () => {
    expect(service.findAll()).toEqual([
      { id: 1, name: 'Budi' },
      { id: 2, name: 'Sari' },
    ]);
  });
});

Jalankan test dengan perintah:

npm run test
      

10. Deploy Aplikasi NestJS

Setelah aplikasi selesai, Anda bisa deploy ke berbagai platform seperti Heroku, Vercel, atau server VPS. Contoh deploy ke Heroku:

  1. Login ke Heroku CLI:
    heroku login
              
  2. Buat aplikasi baru:
    heroku create nama-aplikasi-anda
              
  3. Push kode ke Heroku:
    git push heroku main
              
  4. Set environment variables jika perlu.

Pastikan Procfile sudah dibuat dengan isi:

web: node dist/main.js
      

11. Sumber Belajar dan Source Code

Berikut beberapa sumber belajar dan contoh source code untuk memperdalam NestJS:

Ilustrasi buku, laptop, dan ikon video yang melambangkan sumber belajar dan contoh kode NestJS

Edukasi Terkait