Xây dựng một tính năng hoàn chỉnh trong Claude Code

Quy trình làm việc hoàn chỉnh

Trong bài học trước, chúng ta đã khám phá các quy trình làm việc nâng cao. Bây giờ, hãy xây dựng trên nền tảng đó. Đã đến lúc kết hợp mọi thứ lại với nhau. Chúng ta sẽ cùng nhau xây dựng một tính năng hoàn chỉnh bằng cách sử dụng tất cả các kỹ thuật từ sê-ri này.

Đây không phải là một ví dụ đơn giản. Đây là quy trình làm việc thực tế được sử dụng cho code sản xuất.

Tính năng: Giới hạn tốc độ API

Chúng ta sẽ thêm tính năng giới hạn tốc độ vào API Express.js. Yêu cầu:

  • Giới hạn số lượng yêu cầu mỗi người dùng (theo API key)
  • Giới hạn có thể cấu hình (số yêu cầu mỗi phút)
  • Trả về phản hồi 429 thích hợp khi vượt quá giới hạn
  • Cho phép bỏ qua đối với người dùng quản trị
  • Hỗ trợ Redis cho triển khai phân tán
  • Kiểm thử toàn diện

Hãy bắt đầu xây dựng.

Giai đoạn 1: Lập kế hoạch

Chưa cần viết code. Hãy lập kế hoạch trước.

> Tôi cần thêm tính năng giới hạn tốc độ API vào ứng dụng Express.js.
> Yêu cầu:
> - Giới hạn truy cập theo API key cho mỗi người dùng
> - Giới hạn có thể cấu hình
> - Phản hồi lỗi 429 đúng cách
> - Bỏ qua kiểm tra quản trị viên
> - Hỗ trợ bởi Redis
> - Kiểm thử toàn diện
>
> Phác thảo cách triển khai:
> 1. Cần tạo những file nào?
> 2. Cần sửa đổi những file hiện có nào?
> 3. Thứ tự triển khai như thế nào?
> Chưa viết code.

Claude lập kế hoạch. Xem xét lại. Đặt câu hỏi:

> Tại sao lại dùng Redis thay vì bộ nhớ trong? Nếu muốn hỗ trợ cả hai thì sao?
> Chúng ta sẽ xử lý việc bỏ qua kiểm tra quản trị viên như thế nào - kiểm tra tiêu đề hay tra cứu cơ sở dữ liệu?

Đạt được sự đồng thuận trước khi triển khai.

Giai đoạn 2: Thiết lập ngữ cảnh

Thêm các file liên quan:

/add src/middleware/*.js
/add src/config/index.js
/add package.json
/add tests/middleware/*.test.js

Kiểm tra ngữ cảnh:

/ls

Chúng ta sẽ thấy các mẫu middleware và cấu trúc cấu hình.

Giai đoạn 3: Triển khai cốt lõi

Xây dựng bộ giới hạn tốc độ:

> Tạo middleware giới hạn tốc độ tại src/middleware/rate-limiter.js
>
> Yêu cầu từ kế hoạch của chúng ta:
> - Thuật toán Token bucket
> - Lưu trữ Redis (với dự phòng trong bộ nhớ)
> - Giới hạn có thể cấu hình từ file cấu hình
> - Trả về code 429 với tiêu đề Retry-After
>
> Làm theo các mẫu từ những file middleware hiện có.

Claude tạo middleware. Xem xét nó:

> Hãy giải thích cách Token bucket được nạp lại.
> Điều gì xảy ra nếu Redis không khả dụng?

Khắc phục mọi sự cố:

> Logic dự phòng chưa hoàn toàn chính xác. Khi Redis gặp lỗi, nó nên:
> - Ghi nhật ký lỗi
> - Chuyển sang sử dụng bộ nhớ trong
> - Tiếp tục kiểm tra giới hạn
> Khắc phục điều này.

Giai đoạn 4: Kiểm thử trước

Trước khi tích hợp, hãy viết các bài test:

> Tạo các bài test cho bộ giới hạn tốc độ tại tests/middleware/rate-limiter.test.js
>
> Các trường hợp kiểm thử:
> - Cho phép các yêu cầu dưới giới hạn
> - Chặn các yêu cầu vượt quá giới hạn
> - Trả về phản hồi 429 chính xác với Retry-After
> - Chức năng bỏ qua quản trị viên hoạt động
> - Chức năng dự phòng khi Redis gặp lỗi hoạt động
> - Giới hạn được reset sau khi cửa sổ hết hạn

Chạy các bài test:

> Chạy các bài test. Tất cả đều phải vượt qua.

Nếu các bài test thất bại, hãy lặp lại:

> Bài kiểm thử 3 đang thất bại. Tiêu đề Retry-After không được thiết lập.
> Sửa middleware.

Giai đoạn 5: Tích hợp

Bây giờ hãy kết nối nó:

/add src/app.js
> Tích hợp middleware giới hạn tốc độ.
> - Áp dụng toàn hệ thống nhưng sau middleware xác thực
> - Sử dụng cấu hình cho các giá trị giới hạn
> - Thêm vào chuỗi middleware theo đúng thứ tự

Thêm cấu hình:

/add src/config/index.js
> Thêm cấu hình giới hạn tốc độ:
> - RATE_LIMIT_WINDOW_MS (default 60000)
> - RATE_LIMIT_MAX_REQUESTS (default 100)
> - RATE_LIMIT_ADMIN_BYPASS (default true)

Giai đoạn 6: Các trường hợp ngoại lệ

Cần củng cố thêm:

> Xem xét lại bộ giới hạn tốc độ cho các trường hợp ngoại lệ:
> - Điều gì xảy ra nếu thiếu API key?
> - Điều gì xảy ra nếu API key bị lỗi định dạng?
> - Còn về tình trạng tranh chấp dữ liệu trong môi trường phân tán thì sao?
> - Điều gì xảy ra nếu cấu hình giới hạn không hợp lệ?
>
> Thêm xử lý cho bất kỳ lỗ hổng nào.

Claude xác định các vấn đề và khắc phục chúng.

Giai đoạn 7: Tài liệu

> Tạo tài liệu cho tính năng giới hạn tốc độ:
> - Thêm phần về giới hạn tốc độ vào README
> - Thêm chú thích JSDoc nội tuyến vào middleware
> - Tài liệu hóa các tùy chọn cấu hình
> - Thêm ví dụ về cách kiểm tra giới hạn tốc độ

Giai đoạn 8: Đánh giá cuối cùng

Đánh giá đầy đủ trước khi cam kết:

> Xem xét lại tất cả những gì chúng ta đã xây dựng:
> - src/middleware/rate-limiter.js
> - tests/middleware/rate-limiter.test.js
> - Các thay đổi đối với src/app.js và cấu hình
>
> Có vấn đề gì không? Thiếu trường hợp kiểm thử? Có lỗi tiềm ẩn?

Chạy các bài kiểm tra cuối cùng:

> Chạy tất cả các bài kiểm tra. Xác nhận mọi thứ đều đạt.

Kiểm tra trạng thái git:

git status
git diff

Giai đoạn 9: Cam kết

Xóa lịch sử git:

git add src/middleware/rate-limiter.js
git commit -m "feat: thêm middleware giới hạn tốc độ với lưu trữ Redis"

git add tests/middleware/rate-limiter.test.js
git commit -m "test: thêm độ phủ kiểm thử giới hạn tốc độ"

git add src/app.js src/config/index.js
git commit -m "feat: tích hợp giới hạn tốc độ toàn hệ thống"

git add README.md
git commit -m "docs: tài liệu cấu hình giới hạn tốc độ"

Các cam kết logic mà mỗi cam kết có thể được hoàn tác độc lập.

Thử thách cuối khóa của bạn

Hãy tự xây dựng tính năng này bằng Claude Code:

Tính năng: Ghi nhật ký yêu cầu API

Yêu cầu:

  • Ghi nhật ký tất cả các yêu cầu API đến
  • Bao gồm: dấu thời gian, phương thức, đường dẫn, ID người dùng, thời gian phản hồi, code trạng thái
  • Lưu trữ trong cơ sở dữ liệu (hoặc file để đơn giản)
  • Mức độ ghi nhật ký có thể cấu hình
  • Khả năng truy vấn/tìm kiếm nhật ký
  • Kiểm thử

Quy trình làm việc của bạn nên bao gồm:

  1. Phiên lập kế hoạch (chưa viết code)
  2. Thiết lập ngữ cảnh (thêm các file liên quan)
  3. Triển khai cốt lõi
  4. Test
  5. Tích hợp
  6. Xử lý các trường hợp ngoại lệ
  7. Tạo tài liệu
  8. Xem xét cuối cùng
  9. Cam kết sạch

Sử dụng tất cả những gì bạn đã học.

Nguyên tắc chính

  1. Bối cảnh là tất cả. Chất lượng hơn số lượng.
  2. Lập kế hoạch trước khi thực hiện. Đặc biệt là đối với bất cứ điều gì không tầm thường.
  3. Lặp lại, đừng bắt đầu lại từ đầu. Xây dựng dựa trên những gì đã hiệu quả.
  4. Kiểm chứng liên tục. Kiểm thử sớm và thường xuyên.
  5. Git là lưới an toàn của bạn. Cam kết thường xuyên, hoàn tác dễ dàng.
  6. Sử dụng mức độ hướng dẫn phù hợp. Phân bổ nỗ lực phù hợp với độ phức tạp của nhiệm vụ.

Bước tiếp theo

Bạn đã có nền tảng. Bây giờ:

  • Thực hành hàng ngày. Mỗi nhiệm vụ là một cơ hội để trở nên tốt hơn.
  • Xây dựng quy trình làm việc của riêng bạn. Điều chỉnh các mẫu cho phù hợp với dự án của bạn.
  • Luôn cập nhật. Claude Code phát triển. Kiểm tra các tính năng mới.
  • Chia sẻ kiến ​​thức. Dạy người khác những gì bạn đã học được.

Hãy bắt tay vào xây dựng một cái gì đó.

  • Câu 1:

    Bạn nên làm gì trước khi coi một tính năng là 'hoàn thành'?

    GIẢI THÍCH:

    Các tính năng sẵn sàng cho sản phẩm cần phải vượt qua những bài kiểm tra, xử lý các trường hợp ngoại lệ, có tài liệu và lịch sử git sạch sẽ. Code hoạt động chỉ là bước khởi đầu.

  • Câu 2:

    Bạn nên xử lý một tính năng trải rộng trên nhiều file như thế nào?

    GIẢI THÍCH:

    Các tính năng nhiều file cần những file liên quan trong ngữ cảnh để đảm bảo tính nhất quán, triển khai từng bước để phát hiện sớm các vấn đề và xác minh ở mỗi bước.

  • Câu 3:

    Bước đầu tiên khi bắt đầu một tính năng mới với Claude Code là gì?

    GIẢI THÍCH:

    Luôn bắt đầu bằng việc hiểu rõ những gì bạn đang xây dựng và lập kế hoạch tiếp cận. Bắt tay vào viết code mà không có kế hoạch sẽ dẫn đến việc phải làm lại.

Thứ Sáu, 17/04/2026 11:26
51 👨
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo