Tôi đang phát triển một dịch vụ mới trong môi trường dịch vụ vi mô. Đây là một dịch vụ REST. Để đơn giản, hãy nói rằng đường dẫn là: / historyBooks
Và phương thức POST cho đường dẫn này tạo ra một cuốn sách lịch sử mới.
Chúng ta hãy giả sử rằng một cuốn sách lịch sử bao gồm một hoặc nhiều thời đại trong lịch sử.
Để cho ngắn gọn, hãy giả sử rằng chúng ta chỉ có các thời đại sau của lịch sử loài người:
- Cổ xưa
- Bài cổ điển
- Hiện đại
Trong mã của tôi, tôi muốn đại diện cho họ trong một enum
.
Phần thân của phương thức (tải trọng) có định dạng JSON và phải bao gồm tên trường eras
. Trường này là một danh sách các era
giá trị, mà cuốn sách này bao gồm.
Cơ thể có thể trông như:
{
"name": "From the cave to Einstein - a brief history review",
"author": "Foo Bar",
"eras": ["Ancient", "Post Classical", "Modern"]
}
Trong dịch vụ cụ thể này, logic nghiệp vụ là:
Nếu không có thời đại nào được cung cấp trong đầu vào, thì cuốn sách này được coi là bao gồm tất cả các thời đại.
Trong đánh giá API, một đề xuất đã được đưa ra:
Bao gồm một giá trị khác ALL
, cho eras enum, để chỉ rõ rằng tất cả các thời đại đều được bảo hiểm.
Tôi nghĩ rằng nó có một số ưu và nhược điểm.
Ưu điểm:
Đầu vào rõ ràng
Nhược điểm:
Nếu hai mục trong danh sách được cung cấp, hãy nói ALL
và Ancient
- những gì sẽ được lấy từ ứng dụng? Tôi đoán rằng ALL
sẽ ghi đè lên các giá trị khác, nhưng đó là logic kinh doanh mới.
Nếu tôi chạy một truy vấn, đối với những cuốn sách bao gồm (các) thời đại cụ thể, làm thế nào tôi có thể đại diện cho một cuốn sách bao gồm tất cả các thời đại? Nếu ALL
cũng được sử dụng cho đầu ra (sử dụng cùng logic), thì đó là trách nhiệm của người tiêu dùng để hiểu ALL
là ["Ancient", "Post Classical", "Modern"]
.
Câu hỏi của tôi
Tôi nghĩ rằng có những ALL
nguyên nhân mới gây ra nhiều nhầm lẫn hơn là không có nó.
Bạn nghĩ sao? Bạn sẽ thêm ALL
giá trị này hoặc giữ API của bạn mà không có nó?