0
0
Lập trình
Admin Team
Admin Teamtechmely

Xây dựng REST API sẵn sàng sản xuất với NestJS và PostgreSQL

Đăng vào 4 tháng trước

• 4 phút đọc

Hướng dẫn xây dựng REST API với NestJS, PostgreSQL và Prisma

Trong hướng dẫn này, bạn sẽ học được:

  • Cách thiết lập PostgreSQL với Docker
  • Định nghĩa schema Prisma và chạy migrations
  • Tích hợp Prisma với NestJS
  • Xây dựng các endpoint CRUD (Người dùng & Bài viết)
  • Thực tiễn tốt nhất về xác thực và triển khai

Giới thiệu

REST API đã trở thành một phần không thể thiếu trong việc phát triển ứng dụng web hiện đại. Trong bài viết này, chúng ta sẽ cùng nhau xây dựng một REST API hoàn chỉnh với NestJS, PostgreSQL và Prisma. NestJS là một framework Node.js mạnh mẽ giúp việc phát triển ứng dụng trở nên dễ dàng và hiệu quả hơn. PostgreSQL là một cơ sở dữ liệu quan hệ phổ biến, và Prisma là một ORM giúp dễ dàng tương tác với cơ sở dữ liệu.

Mục tiêu

Mục tiêu của hướng dẫn này là giúp bạn xây dựng một REST API có thể sử dụng trong môi trường sản xuất, với các chức năng cơ bản như tạo, đọc, cập nhật và xóa (CRUD) dữ liệu. Chúng ta sẽ bắt đầu từ việc thiết lập môi trường phát triển cho đến khi hoàn thành API.

1. Thiết lập PostgreSQL với Docker

Docker là một công cụ tuyệt vời giúp chúng ta dễ dàng tạo và quản lý môi trường phát triển. Để bắt đầu, chúng ta cần cài đặt Docker trên máy tính của mình. Sau khi cài đặt xong, bạn có thể tạo một container PostgreSQL bằng cách sử dụng lệnh sau:

bash Copy
docker run --name my-postgres -e POSTGRES_USER=myuser -e POSTGRES_PASSWORD=mypassword -e POSTGRES_DB=mydb -p 5432:5432 -d postgres

Giải thích lệnh:

  • --name my-postgres: Đặt tên cho container
  • -e POSTGRES_USER=myuser: Tạo người dùng với tên là myuser
  • -e POSTGRES_PASSWORD=mypassword: Đặt mật khẩu cho người dùng
  • -e POSTGRES_DB=mydb: Tạo cơ sở dữ liệu với tên mydb
  • -p 5432:5432: Mở cổng 5432 để truy cập vào PostgreSQL
  • -d postgres: Chạy container trong chế độ nền

Sau khi chạy lệnh trên, bạn đã có một container PostgreSQL sẵn sàng để sử dụng.

2. Định nghĩa schema Prisma và chạy migrations

2.1 Cài đặt Prisma

Trước tiên, bạn cần cài đặt Prisma CLI:

bash Copy
npm install @prisma/cli --save-dev

Tiếp theo, tạo một file cấu hình Prisma:

bash Copy
npx prisma init

2.2 Định nghĩa schema

Mở file schema.prisma và định nghĩa các model cho người dùng và bài viết:

prisma Copy
model User {
  id Int @id @default(autoincrement())
  name String
  email String @unique
  posts Post[]
}

model Post {
  id Int @id @default(autoincrement())
  title String
  content String
  author User @relation(fields: [authorId], references: [id])
  authorId Int
}

2.3 Chạy migrations

Sau khi định nghĩa schema, bạn cần chạy migrations để tạo bảng trong cơ sở dữ liệu:

bash Copy
npx prisma migrate dev --name init

3. Tích hợp Prisma với NestJS

3.1 Cài đặt NestJS

Nếu bạn chưa cài đặt NestJS, hãy làm theo hướng dẫn sau:

bash Copy
npm i -g @nestjs/cli
nest new project-name

3.2 Cài đặt Prisma Client

Cài đặt Prisma Client để có thể tương tác với cơ sở dữ liệu:

bash Copy
npm install @prisma/client

3.3 Tạo dịch vụ Prisma

Tạo một dịch vụ để xử lý logic truy vấn cơ sở dữ liệu:

typescript Copy
import { Injectable } from '@nestjs/common';
import { PrismaService } from '../prisma/prisma.service';
import { User } from '@prisma/client';

@Injectable()
export class UserService {
  constructor(private prisma: PrismaService) {}

  async createUser(data: User) {
    return this.prisma.user.create({ data });
  }

  async getUsers() {
    return this.prisma.user.findMany();
  }
}

4. Xây dựng các endpoint CRUD (Người dùng & Bài viết)

4.1 Tạo Controller

Tạo controller để xử lý các yêu cầu HTTP:

typescript Copy
import { Controller, Get, Post, Body } from '@nestjs/common';
import { UserService } from './user.service';
import { User } from '@prisma/client';

@Controller('users')
export class UserController {
  constructor(private userService: UserService) {}

  @Post()
  create(@Body() userData: User) {
    return this.userService.createUser(userData);
  }

  @Get()
  findAll() {
    return this.userService.getUsers();
  }
}

5. Thực tiễn tốt nhất cho xác thực và triển khai

Để đảm bảo API của bạn an toàn và hiệu quả, hãy tham khảo các thực tiễn tốt nhất sau:

  • Xác thực người dùng: Sử dụng JWT hoặc OAuth2 để xác thực người dùng.
  • Kiểm tra lỗi: Thêm cơ chế kiểm tra lỗi cho các yêu cầu API.
  • Ghi log: Ghi lại các hoạt động của API để dễ dàng theo dõi và phát hiện sự cố.

6. Mẹo tối ưu hiệu suất

  • Kết nối cơ sở dữ liệu: Sử dụng kết nối pool để tối ưu hóa việc truy cập cơ sở dữ liệu.
  • Caching: Cân nhắc sử dụng caching để giảm tải cho cơ sở dữ liệu.

7. Giải quyết vấn đề thường gặp

  • Lỗi kết nối cơ sở dữ liệu: Kiểm tra lại các thông tin kết nối trong file cấu hình.
  • Lỗi xác thực: Đảm bảo rằng token xác thực hợp lệ.

8. Kết luận

Bài viết này đã hướng dẫn bạn cách xây dựng một REST API với NestJS, PostgreSQL và Prisma. Hy vọng rằng bạn sẽ áp dụng những kiến thức này vào dự án của mình. Đừng quên theo dõi blog của chúng tôi để cập nhật thêm nhiều kiến thức mới!

👉 Bắt đầu ngay với dự án của bạn!

Câu hỏi thường gặp (FAQ)

Q1: Tôi cần những gì để bắt đầu với NestJS?

A1: Bạn cần Node.js, npm và kiến thức cơ bản về TypeScript.

Q2: Prisma có miễn phí không?

A2: Có, Prisma có phiên bản miễn phí cho các dự án nhỏ.

Q3: Tôi có thể triển khai API này lên môi trường nào?

A3: Bạn có thể triển khai trên nhiều nền tảng như Heroku, AWS, hoặc DigitalOcean.

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