date
Dec 12, 2025
slug
docs-traning-be-intern-week-1
status
Published
tags
NestJs
Backend
summary
Tổng hợp docs trainning back-end Intern Week 1
type
Post

TUẦN 1 – NỀN TẢNG BACKEND

Mục tiêu tuần

  • Hiểu backend là gì trong toàn bộ hệ thống web
  • Hiểu request đi như thế nào từ client → server → DB → trả về
  • Tự tạo được backend project chuẩn production
  • Biết viết API đúng chuẩn, dễ mở rộng
  • Không bị bỡ ngỡ khi bước sang Web3 backend

1. Backend là gì? (Hiểu đúng ngay từ đầu)

Backend KHÔNG phải:

  • Chỉ là “viết API”
  • Chỉ là “lấy dữ liệu từ DB”

Backend LÀ:

  • Xử lý business logic
  • Kiểm soát dữ liệu
  • Đảm bảo bảo mật
  • Kết nối các hệ thống (DB, Blockchain, Queue, Cache, 3rd-party)
👉 Trong Web3:
  • Smart contract xử lý logic on-chain
  • Backend xử lý logic off-chain

2. Web hoạt động như thế nào? (BẮT BUỘC hiểu)

Luồng chuẩn

Browser / Mobile / dApp
HTTP Request
Backend Server
(Auth, Logic, DB, Blockchain)
HTTP Response

Các khái niệm cần nắm

  • Client – Server
  • Stateless server
  • Request / Response
  • JSON

3. HTTP Protocol – Đào sâu (không học thuộc)

HTTP Method

Method
Dùng khi nào
GET
Lấy dữ liệu
POST
Tạo mới
PUT
Cập nhật toàn bộ
PATCH
Cập nhật một phần
DELETE
Xóa
👉 Vì sao dùng đúng method rất quan trọng:
  • Cache
  • Security
  • API standard

HTTP Status Code

  • 200 OK
  • 201 Created
  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 500 Internal Server Error
👉 Backend chuyên nghiệp không trả status code bừa.

4. RESTful API – Không chỉ là “viết endpoint”

REST là gì?

  • Resource-based
  • Không gắn action vào URL
❌ Sai:
POST /createUser
✅ Đúng:
POST /users

Quy ước REST chuẩn

  • URL: danh từ số nhiều
  • Method: thể hiện hành động
  • Response: nhất quán

5. Node.js – Hiểu để không viết backend “ngu”

Node.js là gì?

  • Runtime chạy JS
  • Dựa trên event loop
  • Non-blocking I/O

Event Loop (cực kỳ quan trọng)

  • Node xử lý nhiều request trên 1 thread
  • Không được block thread
❌ Sai:
while(true) {}
👉 Backend blockchain rất dễ bị block nếu không hiểu cái này.

6. Async / Await – BẮT BUỘC thuần thục

Vì sao backend toàn async?

  • DB
  • Blockchain RPC
  • Network call

Hiểu bản chất:

  • async = Promise
  • await = chờ Promise resolve

7. Express / Fastify – Framework backend

Khái niệm cần hiểu

  • App
  • Route
  • Controller
  • Middleware
  • Error handler

Middleware là gì?

  • Chạy trước controller
  • Dùng cho:
    • Auth
    • Logging
    • Validate
    • Rate limit

8. Cấu trúc project CHUẨN (quan trọng)

Cấu trúc gợi ý

src/
├── app.ts
├── server.ts
├── routes/
├── controllers/
├── services/
├── middlewares/
├── utils/
├── config/
👉 Vì sao phải tách?
  • Dễ test
  • Dễ scale
  • Dễ bảo trì

9. Environment & Config

Vì sao không hard-code?

  • API key
  • DB URL
  • Private key

Dùng:

  • .env
  • process.env

10. Error Handling – Backend “xịn” khác backend thường

Sai lầm phổ biến

  • try/catch khắp nơi
  • Trả lỗi không rõ ràng

Chuẩn:

  • Centralized error handler
  • Custom error class

11. Logging – Bắt buộc cho production

Vì sao cần log?

  • Debug
  • Audit
  • Security

Log những gì?

  • Request
  • Error
  • Performance

12. Git & Workflow cơ bản

Bắt buộc biết

  • init repo
  • commit
  • branch
  • .gitignore

13. Bài tập BẮT BUỘC (Hands-on)

Bài 1 – Setup project

  • Node.js + TypeScript
  • Express
  • Env
  • ESLint + Prettier

Bài 2 – Viết API

  • GET /health
  • POST /auth/login
  • GET /users/me

Bài 3 – Middleware

  • Logger middleware
  • Auth middleware (fake token)

14. Checklist TỰ KIỂM TRA

  • Backend khác frontend thế nào?
  • Stateless server là gì?
  • Middleware chạy khi nào?
  • Vì sao không xử lý logic trong route?
  • Event loop ảnh hưởng gì tới backend?
Vì sao Web3 backend càng cần backend tốt?
 

© Hiếu Trần 2020 - 2025

Tip: Use console.table() for better array logging!