Xử lý phản hồi (Output fields)
Last updated
Last updated
Flask-RESTful hỗ trợ nhiều cơ chế kết xuất dữ liệu (field) trong phản hồi (response) thông qua module fields
. Bên cạnh đó, module này cho phép định dạng phản hồi theo nhu cầu của lập trình viên, điều này giúp hạn chế rò rỉ các cấu trúc dữ liệu của chương trình.
fields
Bạn có thể sử dụng cấu trúc dữ liệu dict
hoặc OrderedDict
chứa các trường (fields), với key là tên thuộc tính hoặc là một đối tượng để kết xuất (render). Ví dụ bên dưới gồm có ba trường, gồm: hai trường kiểu String
và một trường kiểu DateTime
, được định dạng dưới dạng chuỗi ngày tháng RFC 822 (Flask-RESTful cũng hỗ trợ ISO 8601).
Trong đoạn chương trình trên, phương thức db_get_todo()
sẽ trả về một đối tượng có thể bao gồm các thuộc tính khác, ngoài ba thuộc tính được định nghĩa trong resource_fields
. Module fields
, trong tình huống này, sẽ chỉ kết xuất (render) và trả về những trường dữ liệu được định nghĩa trong resource_fields
, và bỏ qua các thuộc tính khác trong đối tượng được trả về từ phương thức db_get_todo()
.
Tính năng này cho phép lập trình viên thay đổi tên thuộc tính khi kết xuất dữ liệu (field) cho phía client. Điều này được thực hiện thông qua tham số attribute
.
Từ khóa attribute
có thể hỗ trợ xử lý hàm vô danh (lambda).
Các thuộc tính lồng nhau (nested properties) cũng được hỗ trợ.
Trong một số tình huống, lập trình viên có thể định nghĩa giá trị mặc định cho các trường dữ liệu, thông qua tham số default
.
Kỹ thuật này cho phép mở rộng module fields
để hỗ trợ các định dạng theo nhu cầu của lập trình viên. Điều này được thực hiện đơn giản bằng cách kế thừa (extend) lớp fields.Raw
và hiện thực phương thức format()
.
Đoạn ví dụ mô phỏng hai chức năng trong một ứng dụng Mail. Ví dụ này giả định rằng bit 1
trong thuộc tính flags
biểu thị ý nghĩa "Bình thường" hoặc "Khẩn cấp", và bit 2
biểu thị "Đã đọc" hoặc "Chưa đọc". Các mục này có thể dễ dàng lưu trữ trong một bitfield
, nhưng để người dùng có thể hiểu được ý nghĩa, người lập trình nên chuyển đổi chúng thành các giá trị chuỗi.
fields
Flask-RESTful cũng bao gồm trường dữ liệu fields.Url
để biễu diễn các đường dẫn Web. Đây là tính năng quan trọng trong việc mở rộng tài nguyên cho một phản hồi (reponse) từ server về client. Chẳng hạn, tính năng phân trang (pagination) thì trường fields.Url
có thể được khai thác để biểu diễn trang liền trước/liền sau.
Thông số absolute
có thể được dùng để trả về một URI tuyệt đối (absolute URI), thay vì một URI tương đối (relative URI).
Trong đoạn lệnh bên dưới, bạn đọc có thể thực hành nhanh với module fields
của Flask-RESTful trên môi trường CMD hoặc Terminal để biểu diễn các cấu trúc phức tạp (complex structures).
Module fields
của Flask-RESTful cũng hỗ trợ các trường dữ liệu dạng danh sách (list), như các đoạn lệnh trên môi trường CMD hoặc Terminal sau.
Chương này đã trình bày các kỹ thuật xử lý xử lý phản hồi (output fields) cho các yêu cầu (request) từ client. Việc xử lý phản hồi được thực hiện thông qua module fields
.
Trong ngôn ngữ lập trình Python, lambda
là một từ khoá để tạo ra hàm vô danh (anonymous function). Hàm vô danh là một hàm không có tên và thường được sử dụng khi cần một hàm đơn giản mà không cần phải đặt tên cho nó.