Tập 26: FastAPI nhận dữ liệu form bằng Form() — endpoint login chuẩn OAuth2 trong 5 phút. Tài khoản đúng, mật khẩu đúng mà server vẫn trả lỗi 422: nguyên nhân là client gửi dữ liệu dạng form trong khi endpoint của bạn lại đang chờ JSON. Tập này giải thích vì sao FastAPI mặc định hiểu Pydantic model là JSON body, cách dùng Form() cho từng trường với validate min_length, và khi nào dùng OAuth2PasswordRequestForm cho endpoint /token chuẩn OAuth2 để tương thích ngay với nút Authorize trên Swagger UI. Nhớ cài python-multipart trước khi dùng Form(), và quy tắc nhanh: client gửi JSON thì dùng Pydantic model, client gửi form thì dùng Form().

Đọc bài viết đầy đủ kèm code mẫu đã kiểm chứng chạy được tại: FastAPI: nhận dữ liệu form bằng Form() — endpoint login chuẩn OAuth2 trong 5 phút

English version