L45 — Request Validation

Validation là rào chắn đầu tiên của mọi HTTP handler. Ba module dưới đây cho bạn nghịch trực tiếp: (1) gõ struct tag + JSON rồi xem lỗi từng field như go-playground/validator làm; (2) dựng response lỗi chuẩn RFC 7807 Problem Details; (3) so sánh số dòng code giữa manual validation và dùng lib.

1. Validation tag playground

Engine ở đây mô phỏng validator.Struct(): đọc tag validate:"rule1,rule2" của từng field rồi áp lên giá trị trong JSON. Hỗ trợ: required, email, min, max, gt, oneof, alphanum, gtfield=Field, và custom vnphone.

Định dạng: tên_field rule1,rule2,... — ví dụ email required,email

2. RFC 7807 Problem Details builder

Chọn kịch bản lỗi, chỉnh các trường, rồi xem response chuẩn IETF kèm header Content-Type: application/problem+json. Validation fail dùng 422, JSON malformed dùng 400.

3. Manual vs library — đếm dòng code

Cùng một struct với 5 field. Kéo thanh trượt số field để thấy manual if/else phình ra tuyến tính, còn lib chỉ thêm 1 dòng tag mỗi field.

5
Manual
Lib
Manual (if/else)go-playground/validator
Dòng code (ước tính)~32~7
Gom hết lỗi 1 lầnphải tự thu vào slicetự động
i18n messagetự viết bảng dịchtranslations/vi sẵn
Cross-fieldtự so sánh taygtfield, eqfield
Phụ thuộckhôngthêm 1 module

      

      

Quy tắc README: ≤ 3 request type, < 5 field → manual OK. ≥ 5 type hoặc cần i18n → dùng lib.