0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Xây Dựng CRUD REST API với NestJS, Docker, Swagger và Prisma

Đăng vào 3 tuần trước

• 4 phút đọc

Hướng Dẫn Xây Dựng CRUD REST API với NestJS, Docker, Swagger và Prisma

Chào mừng bạn đến với bài hướng dẫn chi tiết về cách tạo ra một RESTful API với NestJS, Docker, Swagger và Prisma. Mục tiêu của hướng dẫn này là cung cấp cho bạn các bước cần thiết để xây dựng một backend mạnh mẽ và hiệu quả, bất kể bạn là một lập trình viên có nhiều năm kinh nghiệm hay là một người mới bắt đầu.

Mục Tiêu Hướng Dẫn

Chúng ta sẽ xây dựng một ứng dụng cho phép thêm, sửa, và xóa các công thức nấu ăn (recipe). Mỗi công thức nấu ăn sẽ bao gồm các thông tin sau:

  • Title: Tên của công thức
  • Description: Mô tả ngắn gọn về công thức
  • Ingredients: Danh sách nguyên liệu cần thiết
  • Instructions: Các bước thực hiện món ăn

Công Nghệ Sử Dụng

Trong hướng dẫn này, chúng ta sẽ sử dụng một số công nghệ nổi bật:

  • NestJS: Một framework Node.js hiện đại.
  • Prisma: Công cụ nguồn mở dành cho cơ sở dữ liệu.
  • PostgreSQL: Hệ quản trị cơ sở dữ liệu nguồn mở.
  • Docker: Nền tảng phát triển và triển khai ứng dụng.
  • Swagger: Công cụ thiết kế, xây dựng và tài liệu hóa các API.
  • TypeScript: Ngôn ngữ lập trình dựa trên JavaScript với tính năng kiểu tĩnh.

Mỗi công nghệ sẽ đóng vai trò quan trọng trong việc tạo ra một ứng dụng dễ mở rộng và bảo trì. Chúng ta sẽ đi sâu hơn vào từng công nghệ trong quá trình hướng dẫn.

Điều Kiện Tiên Quyết

Hướng dẫn này được thiết kế thân thiện với người mới bắt đầu, nhưng bạn cần có một số kiến thức cơ bản về:

  • TypeScript
  • NestJS
  • Docker

Nếu bạn chưa quen thuộc với những công nghệ này, đừng lo lắng! Tôi sẽ hướng dẫn bạn từng bước một.

Thiết Lập Môi Trường Phát Triển

Trong hướng dẫn này, chúng ta sẽ sử dụng những công cụ sau:

  • Node.js: Môi trường thực thi cho ứng dụng
  • Docker: Dùng để chứa database
  • Visual Studio Code: Trình soạn thảo mã nguồn
  • PostgreSQL: Cơ sở dữ liệu sử dụng
  • NestJS: Framework cho Node.js

Bước 1: Thiết Lập Dự Án NestJS

Đầu tiên, hãy cài đặt NestJS CLI trên máy tính của bạn:

bash Copy
npm i -g @nestjs/cli

Khởi động một dự án mới bằng lệnh sau:

bash Copy
nest new recipe

Trong quá trình khởi tạo, bạn sẽ được hỏi chọn một package manager, hãy chọn npm. Sau đó, mở dự án trong Visual Studio Code để theo dõi cấu trúc thư mục mà NestJS CLI đã tạo.

Bước 2: Cài Đặt PostgreSQL Qua Docker

Để lưu trữ các recipe, chúng ta sẽ sử dụng cơ sở dữ liệu PostgreSQL và Docker sẽ giúp chúng ta chứa cơ sở dữ liệu này một cách dễ dàng. Trước tiên, hãy đảm bảo bạn đã cài đặt Docker.

Tạo file docker-compose.yml trong thư mục gốc của dự án:

bash Copy
touch docker-compose.yml

Thêm vào nội dung sau:

yaml Copy
version: '3.8'
services:
  postgres:
    image: postgres:13.5
    restart: always
    environment:
      - POSTGRES_USER=recipe
      - POSTGRES_PASSWORD=RecipePassword
    volumes:
      - postgres:/var/lib/postgresql/data
    ports:
      - '5432:5432'
volumes:
  postgres:

Chạy Docker để khởi động container PostgreSQL:

bash Copy
docker-compose up -d

Bước 3: Thiết Lập Prisma

Prisma sẽ giúp chúng ta tương tác với cơ sở dữ liệu. Cài đặt Prisma CLI:

bash Copy
npm install prisma -D

Khởi tạo Prisma:

bash Copy
npx prisma init

Thay đổi file .env để cập nhật thông tin kết nối với PostgreSQL:

Copy
DATABASE_URL="postgres://recipe:RecipePassword@localhost:5432/recipe"

Mở file schema.prisma để định nghĩa các model dữ liệu:

prisma Copy
model Recipe {
  id           Int      @id @default(autoincrement())
  title        String   @unique
  description  String?
  ingredients  String
  instructions String
  createdAt    DateTime @default(now())
  updatedAt    DateTime @updatedAt
}

Chạy lệnh migrate để tạo bảng trong database:

bash Copy
npx prisma migrate dev --name init

Bước 4: Cài Đặt Swagger

Cài đặt Swagger cho ứng dụng của bạn:

bash Copy
npm install --save @nestjs/swagger swagger-ui-express

Mở file main.ts để cấu hình Swagger:

typescript Copy
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  const config = new DocumentBuilder()
    .setTitle('Recipes API')
    .setDescription('API cho các công thức nấu ăn')
    .setVersion('1.0')
    .build();
  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule.setup('api', app, document);
  await app.listen(3000);
}
bootstrap();

Bước 5: Triển Khai CRUD cho Recipe Model

Tạo ra các endpoint cho CRUD operations:

  • POST /recipe: Tạo mới một recipe.
  • GET /recipe: Lấy danh sách tất cả các recipe.
  • GET /recipe/:id: Lấy một recipe cụ thể dựa trên ID.
  • PATCH /recipe/:id: Cập nhật một recipe.
  • DELETE /recipe/:id: Xóa một recipe.

Kết Luận

Trong hướng dẫn này, chúng ta đã đi qua toàn bộ quá trình xây dựng một REST API sử dụng NestJS và Prisma. Hướng dẫn cung cấp kiến thức nền tảng vững chắc cho các dự án phát triển ứng dụng sau này. Hãy tự do mở rộng và tùy chỉnh để phù hợp với nhu cầu của bạn. Chúc bạn thành công trong việc lập trình!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào