Ràng buộc Tham số Đường dẫn & Regex Mã Đơn hàng (Path Parameter Regex Constraints)
Viết hàm create_order_lookup_app() -> FastAPI:
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: fastapi app, Path.
Nội dung đề bài
Mục tiêu kiến thức
- Áp dụng Path(..., pattern=...) trong FastAPI để kiểm tra định dạng tham số URL trước khi vào controller.
- Xử lý mã lỗi HTTP 422 Unprocessable Entity khi tham số sai cấu trúc.
Mô tả bài toán
Viết hàm create_order_lookup_app() -> FastAPI: Định nghĩa endpoint: GET /orders/{order_code}:
- Tham số order_code: str nhận từ đường dẫn (Path parameter).
- Ràng buộc order_code phải khớp biểu thức chính quy:
^ORD-[0-9]{4}-[A-Z]{3} (Ví dụ hợp lệ: ORD-2026-ABC, ORD-1999-XYZ; không hợp lệ: ORD-26-A, ord-2026-abc, 12345). 3. Nếu hợp lệ: trả về JSON: {"order_code": order_code, "status": "CONFIRMED", "valid": True}. 4. Nếu không khớp regex: FastAPI tự động trả về mã lỗi 422 Unprocessable Entity. ## Input - Các tham số truyền vào hàm/lớp create_order_lookup_app hoặc dữ liệu đầu vào theo định dạng mô tả. ## Output - Kết quả trả về của hàm/lớp create_order_lookup_app hoặc dữ liệu in ra màn hình theo đúng đặc tả. ## Ràng buộc - Thời gian chạy tối đa: 1000ms. - Giới hạn bộ nhớ: 256MB. - Dữ liệu đầu vào tuân thủ đúng kiểu dữ liệu và miền giá trị được mô tả. ## Ví dụ 1 ### Input python create_order_lookup_app(path='/orders/ORD-2026-VNX') ### Output python True ### Giải thích ví dụ 1 Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Input
order_code: str nhận từ đường dẫn (Path parameter).
^ORD-[0-9]{4}-[A-Z]{3} (Ví dụ hợp lệ: ORD-2026-ABC, ORD-1999-XYZ; không hợp lệ: ORD-26-A, ord-2026-abc, 12345). 3. Nếu hợp lệ: trả về JSON: {"order_code": order_code, "status": "CONFIRMED", "valid": True}. 4. Nếu không khớp regex: FastAPI tự động trả về mã lỗi 422 Unprocessable Entity. ## Input - Các tham số truyền vào hàm/lớp create_order_lookup_app hoặc dữ liệu đầu vào theo định dạng mô tả. ## Output - Kết quả trả về của hàm/lớp create_order_lookup_app hoặc dữ liệu in ra màn hình theo đúng đặc tả. ## Ràng buộc - Thời gian chạy tối đa: 1000ms. - Giới hạn bộ nhớ: 256MB. - Dữ liệu đầu vào tuân thủ đúng kiểu dữ liệu và miền giá trị được mô tả. ## Ví dụ 1 ### Input python create_order_lookup_app(path='/orders/ORD-2026-VNX') ### Output python True ### Giải thích ví dụ 1 Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Output
^ORD-[0-9]{4}-[A-Z]{3} (Ví dụ hợp lệ: ORD-2026-ABC, ORD-1999-XYZ; không hợp lệ: ORD-26-A, ord-2026-abc, 12345). 3. Nếu hợp lệ: trả về JSON: {"order_code": order_code, "status": "CONFIRMED", "valid": True}. 4. Nếu không khớp regex: FastAPI tự động trả về mã lỗi 422 Unprocessable Entity. ## Input - Các tham số truyền vào hàm/lớp create_order_lookup_app hoặc dữ liệu đầu vào theo định dạng mô tả. ## Output - Kết quả trả về của hàm/lớp create_order_lookup_app hoặc dữ liệu in ra màn hình theo đúng đặc tả. ## Ràng buộc - Thời gian chạy tối đa: 1000ms. - Giới hạn bộ nhớ: 256MB. - Dữ liệu đầu vào tuân thủ đúng kiểu dữ liệu và miền giá trị được mô tả. ## Ví dụ 1 ### Input python create_order_lookup_app(path='/orders/ORD-2026-VNX') ### Output python True ### Giải thích ví dụ 1 Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
