NestJS – Xây Dựng Backend với NestJS

3 min read

Mở Đầu Giới Thiệu

NestJS là một framework Node.js mạnh mẽ, được xây dựng dựa trên TypeScript và lấy cảm hứng từ các khái niệm của Angular. NestJS giúp các nhà phát triển tạo ra các ứng dụng server-side có cấu trúc rõ ràng, dễ bảo trì và mở rộng. Với khả năng hỗ trợ tuyệt vời cho TypeScript, NestJS mang lại trải nghiệm lập trình hiện đại, mạnh mẽ và hiệu quả. Trong bài viết này, chúng ta sẽ khám phá cách khởi tạo một project bằng Nest CLI và xây dựng một REST API cơ bản với NestJS.

Khởi Tạo Project Bằng Nest CLI

1. Cài Đặt Nest CLI

Trước tiên, bạn cần cài đặt Nest CLI, công cụ giúp bạn khởi tạo và quản lý các project NestJS một cách dễ dàng.

$ npm install -g @nestjs/cli

2. Tạo Project Mới

Sử dụng lệnh nest new để tạo một project NestJS mới:

$ nest new my-nest-project

Bạn sẽ được yêu cầu chọn công cụ quản lý package (npm hoặc yarn). Sau khi chọn và hoàn thành quá trình cài đặt, di chuyển vào thư mục project:

$ cd my-nest-project

Viết REST API Bằng NestJS

1. Tạo Module và Controller

NestJS sử dụng các module để tổ chức mã nguồn. Mỗi module chứa các thành phần như controller, service, và các thành phần khác liên quan.

  1. Tạo một module và controller cho “articles”:
    bash $ nest generate module articles $ nest generate controller articles $ nest generate service articles

2. Định Nghĩa Model

Sử dụng TypeScript để định nghĩa một model cho Article. Tạo một file article.model.ts trong thư mục src/articles và thêm mã sau:

export class Article {
  id: number;
  title: string;
  body: string;
}

3. Viết Service

Service chịu trách nhiệm xử lý logic nghiệp vụ. Mở file src/articles/articles.service.ts và thêm mã sau:

import { Injectable } from '@nestjs/common';
import { Article } from './article.model';

@Injectable()
export class ArticlesService {
  private articles: Article[] = [];
  private idCounter = 1;

  findAll(): Article[] {
    return this.articles;
  }

  findOne(id: number): Article {
    return this.articles.find(article => article.id === id);
  }

  create(article: Article): Article {
    article.id = this.idCounter++;
    this.articles.push(article);
    return article;
  }

  update(id: number, articleData: Partial<Article>): Article {
    const article = this.findOne(id);
    if (!article) return null;

    Object.assign(article, articleData);
    return article;
  }

  delete(id: number): void {
    this.articles = this.articles.filter(article => article.id !== id);
  }
}

4. Viết Controller

Controller định nghĩa các tuyến đường và xử lý các yêu cầu HTTP. Mở file src/articles/articles.controller.ts và thêm mã sau:

import { Controller, Get, Post, Body, Param, Put, Delete } from '@nestjs/common';
import { ArticlesService } from './articles.service';
import { Article } from './article.model';

@Controller('articles')
export class ArticlesController {
  constructor(private readonly articlesService: ArticlesService) {}

  @Get()
  findAll(): Article[] {
    return this.articlesService.findAll();
  }

  @Get(':id')
  findOne(@Param('id') id: number): Article {
    return this.articlesService.findOne(id);
  }

  @Post()
  create(@Body() article: Article): Article {
    return this.articlesService.create(article);
  }

  @Put(':id')
  update(@Param('id') id: number, @Body() articleData: Partial<Article>): Article {
    return this.articlesService.update(id, articleData);
  }

  @Delete(':id')
  delete(@Param('id') id: number): void {
    this.articlesService.delete(id);
  }
}

5. Đăng Ký Module

Đảm bảo rằng ArticlesModule được đăng ký trong AppModule. Mở file src/app.module.ts và thêm ArticlesModule:

import { Module } from '@nestjs/common';
import { ArticlesModule } from './articles/articles.module';

@Module({
  imports: [ArticlesModule],
})
export class AppModule {}

Kết Luận

NestJS cung cấp một framework mạnh mẽ và linh hoạt cho việc phát triển backend với Node.js. Bằng cách sử dụng Nest CLI và các công cụ tích hợp, bạn có thể nhanh chóng khởi tạo và xây dựng các ứng dụng REST API một cách dễ dàng và hiệu quả. Hy vọng rằng qua bài viết này, bạn đã có cái nhìn tổng quan về cách sử dụng NestJS để xây dựng backend. Hãy bắt tay vào thực hiện và khám phá thêm nhiều tính năng tuyệt vời mà NestJS mang lại!

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *