Mô hình hóa dữ liệu trong lập trình mạng

Mô hình hóa dữ liệu trong lập trình mạng

Trước đây trong học phần này, chúng ta đã thảo luận một loạt các hình thức dữ liệu. Các hình thức dựa trên text
như YAML, XML và JSON là cực tốt cho trình bày dữ liệu trong một cách thức đóng gói và con người đọc được. Các
dữ liệu nhị phân như protobuf là hữu dụng khi hiệu suất là một chút quan trọng hơn. Tất cả các hình thức này có
các hệ thống cơ bản nên chương trình của bạn có thể hiểu rằng một chuỗi các kí tự hay bytes đã cho là một string,
số nguyên hay boolean. Tại cuối ngày, tất cả các hình thức này là nhằm mục đích trình bày dữ liệu theo một cách
cái có thể được chuỗi hóa và phá chuỗi, để tạo điều kiện cho các thứ như trao đổi thông tin dựa trên API.
Tuy nhiên, đôi khi chúng ta cần nhiều hơn chỉ chuỗi hóa đơn giản. Hãy tưởng tượng rằng chúng ta đang tương tác với
một điểm cuối API để cập nhật hostname cho thiết bị mạng. JSOB payload cho một yêu cầu đối với điểm cuối này trông
như thứ gì đó như code dưới.

{
“hostname”: “”
}

JSON object này có một key đơn, hostname, giá trị của nó cũng là một string, có lẽ trình bày hostname mới chúng ta
muốn sử dụng cho thiết bị này. Tuy nhiên, trong khi nó là một string có hiệu lực. nó cũng là rỗng. Từ một khía cạnh
định dạng JSON, đây là một cú pháp hoàn toàn có hiệu lực, bất cứ cái trình bày JSON cứng nào sẽ không có vấn đề
phá chuỗi tài liệu này.
Tuy nhiên, nếu chúng ta sẽ gửi payload này tới điểm cuối API trong vấn đề, nó vẫn có thể gây vấn đề. Các vấn đề này
không liên quan đến tính hiệu lực của bản thân tài liệu JSON, nhưng hơn là các hiệu ứng xuôi dòng của gửi một string
rỗng như một tham số tới chức năng cập nhật hostname cái điểm cuối API này trình bày. Bây giờ, tất nhiên, máy chủ
API có thể bao gồm một kiểm tra để đảm bảo rằng trường này không rỗng, cái này có thể lấy hình thức của một conditional
như code dưới.

req = json.loads(json_str)
if req[“hostname”] == “”:
raise Exception(“Hostname field must not be empty”)

Chia sẻ