Controllers trong NestJS

Controller là lớp chịu trách nhiệm xử lý incoming requests và trả về responses cho client. Nó định tuyến các requests đến các service phù hợp để xử lý logic, sau đó trả về kết quả cho client.

Khái Niệm Controller

Controller là một class được trang trí bằng @Controller() decorator. Nó chứa các methods được trang trí bằng các HTTP method decorators (@Get(), @Post(), v.v.) để xử lý các HTTP requests.

Routing Cơ Bản

Khai Báo Route Path

Nested Routes

Wildcard Routes

Extracting Request Data

@Param() - URL Parameters

@Query() - Query String Parameters

@Body() - Request Body

@Headers() - Request Headers

@Req() và @Res() - Express Objects

@Ip() - Client IP Address

@HostParam() - Subdomain Routing

Response Handling

Automatic Response Serialization

Custom Status Codes

Custom Headers

Streaming Responses

Sending Files

Data Transfer Objects (DTOs)

DTO là class định nghĩa structure của request/response data:

DTOs với Validation

Ví dụ Thực Tế - REST API Hoàn Chỉnh

Asynchronous Endpoints

Controllers có thể xử lý async operations:

Redirects

Best Practices

1. Tổ Chức Controllers theo Features

2. Sử Dụng DTOs cho Type Safety

3. Consistent Response Format

4. Error Handling

5. Proper HTTP Status Codes

6. Validate Input Data

Testing Controllers

Kết Luận

Controllers là giao diện giữa client và logic ứng dụng của bạn. Hiểu rõ về controllers giúp bạn:
  • Xây dựng API RESTful chuyên nghiệp
  • Xử lý requests và responses một cách rõ ràng
  • Validate input data một cách hiệu quả
  • Trả về appropriate HTTP status codes
  • Xây dựng ứng dụng dễ test và bảo trì
Sử dụng controllers đúng cách là cơ sở để xây dựng các NestJS applications mạnh mẽ và scalable.