net/http Deep — minh họa tương tác

Ba module: vòng đời request/response trong Go runtime, middleware chain theo mô hình củ hành (onion), và bài tập chọn status code đúng cho từng tình huống thật.

Module 1 Vòng đời Request / Response

Bấm "Chạy từng bước" hoặc "Tự động" để xem một request GET /users/42 đi qua 6 bước trong net/http: từ Accept tới khi flush response và quyết định keep-alive.

Bấm để bắt đầu — request chưa tới.
CLIENT RUNTIME / net/http HANDLER Client: GET /users/42 1. Accept() 2. go conn.serve (goroutine) 3. Parse line + headers → *Request 4. mux dispatch match GET /users/{id} 6. Flush + keep-alive? 5. handler: WriteHeader→Write
Mỗi connection chạy trong một goroutine riêng (~2KB stack ban đầu). 10k request đồng thời ≈ 20MB — Go scale tốt.

Module 2 Middleware Chain — mô hình củ hành

Chain Logger(Auth(Recover(Handler))). Request đi từ ngoài vào trong (before), tới Handler, rồi response đi ngược ra ngoài (after). Mỗi lớp bọc lớp trong — đó là lý do gọi là "onion model".

request → ← response Logger (ngoài cùng) Auth Recover Handler
Bấm "Gửi request" để xem thứ tự thực thi từng lớp.

Module 3 Status Code Picker

Đọc tình huống, chọn status code phù hợp nhất. Bấm xong sẽ hiện đúng/sai kèm giải thích. 12 tình huống thực tế.

Tình huống 1 / 12