- vừa được xem lúc

Tạm biệt Boilerplate: Hãy để AI tạo giúp bạn các Endpoint Express.js

0 0 2

Người đăng: Thái Thịnh

Theo Viblo Asia

Việc viết đi viết lại các hàm như createTask, getTask, updateTask, deleteTask thật sự nhàm chán; hàng chục tutorial đều trình bày cùng một mẫu và chúng ta đã tốn vô số giờ cho những đoạn logic lặp đi lặp lại.

Nhiều nền tảng no-code, các dự án mã nguồn mở và thư viện đã giúp lập trình viên sinh ra mã mẫu (boilerplate), chứng minh rằng các kỹ sư backend đều mong muốn có cách đơn giản hơn để xây dựng API.

Nhưng với sự phát triển của các công cụ AI như Line0, Cursor và Windsurf, giờ đây bạn có thể xây dựng dịch vụ backend sẵn sàng chạy production chỉ từ một lời nhắc đơn giản (prompt):

Checklist khởi động nhanh

  • Mô tả mô hình dữ liệu của bạn (Ví dụ: Task { id:int, title:string, completed:bool })

  • Đưa prompt cho AI: “Tạo một dịch vụ backend cho Task với validation và xử lý lỗi”

  • Xem xét và chỉnh sửa – tránh “code theo cảm tính”; hãy hiểu từng dòng mã được tạo ra. Nếu chấp nhận mã một cách mù quáng, bạn có thể tạo ra lỗ hổng bảo mật hoặc gánh nợ kỹ thuật.

  • Viết test tích hợp hoặc để AI tự tạo test

  • Commit lên GitHub

Ví dụ Prompt & kết quả

Prompt: Tạo dịch vụ backend Express.js cho Task, dùng zod để xác thực, lưu trữ qua PostgreSQL.

Kết quả AI sinh ra có thể như sau:

// src/routes/tasks.ts import express from "express"; import { taskValidator } from "@/schemas/task.js";
import { validate } from "@/middleware/validate.js"; import { notFoundError } from "@/utils/errors/common.js";
import { response } from "@/utils/response.js"; const router = express.Router(); router .route("/") .post(validate(taskValidator().createtaskSchema, "body"), async (req, res, next) => { const payload = req.body; await taskController .createTask(payload) .then((result) => res.status(201).json(response(result))) .catch(next); }) .get(async (_req, res, next) => { await taskController .getAllTasks() .then((result) => res.json(response(result))) .catch(next); }); /* ...other endpoints... */ export { router as taskRouter };

Các công cụ như Line0 cũng sẽ tự sinh ra toàn bộ logic nghiệp vụ cần thiết (controller taskController, schema validator taskValidator và hàm xử lý phản hồi response) từ lời nhắc ban đầu, mang đến cho bạn một API hoạt động đầy đủ mà không cần viết thêm gì.

Mẹo Prompt Engineering

image.png

Lợi ích năng suất

  • 78% lập trình viên báo cáo hiệu suất cao hơn khi để AI hỗ trợ sinh phần lớn mã
  • 97% lập trình viên đã thử dùng AI để viết mã ít nhất một lần (theo khảo sát GitHub 2024)

Best Practices

  • Giữ unit test gần source code – nếu bạn dùng Line0, nó có thể viết luôn test cho bạn
  • Duy trì linting và formatting để đảm bảo mã nhất quán
  • Xem xét kỹ dependencies – công cụ AI có thể thêm package không cần thiết

Bình luận

Bài viết tương tự

- vừa được xem lúc

The Twelve-Factor App, cẩm nang gối đầu giường trong xây dựng application (Phần 1)

Giới thiệu. Ngày nay các phần mềm được triển khai dưới dạng các dịch vụ, chúng được gọi là các web apps hay software-as-a-service (SaaS).

0 0 47

- vừa được xem lúc

8 Sai lầm phổ biến khi lập trình Android

1. Hard code.

0 0 207

- vừa được xem lúc

Popular interview question: What is the difference between Process and Thread? 10 seconds a day

Video được đăng tại channel Tips Javascript

0 0 45

- vừa được xem lúc

Thuật toán và ứng dụng - P1

Mục đích series. . Những bài toán gắn liền với thực tế. Từ đó thấy được tầm quan trọng của thuật toán trong lập trình.

0 0 47

- vừa được xem lúc

Tác dụng của Docker trong quá trình học tập

Docker bây giờ gần như là kiến thức bắt buộc đối với các anh em Dev và Devops, nhưng mà đối với sinh viên IT nói chung vẫn còn khá mơ hồ và không biết tác dụng thực tế của nó. Hôm nay mình sẽ chia sẻ

0 0 55

- vừa được xem lúc

Làm giàu trong ngành IT

Hầu như mọi người đều đi làm để kiếm tiền, ít người đi làm vì thấy cái nghề đó thú vị lắm. Bây giờ vất cho mình 100 tỷ bảo mình bỏ nghề thì mình cũng bỏ thôi.

0 0 58