Я розробляю нову послугу в середовищі мікропослуг. Це послуга REST. Для простоти скажімо, що шлях є: / historyBooks
І метод POST для цього шляху створює нову книгу історії.
Припустимо, що книга історії охоплює одну чи кілька епох історії.
Для стислості припустимо, що у нас є лише такі епохи людської історії:
- Стародавній
- Повідомлення класичного
- Сучасний
У своєму коді я хотів би представити їх у enum
.
Тіло методу (корисна навантаження) у форматі JSON і повинно містити назву поля eras
. Це поле - це список era
цінностей, які охоплює ця книга.
Тіло може виглядати так:
{
"name": "From the cave to Einstein - a brief history review",
"author": "Foo Bar",
"eras": ["Ancient", "Post Classical", "Modern"]
}
У цій конкретній службі ділова логіка така:
Якщо у введенні не передбачено жодних епох, то ця книга вважається такою, що охоплює всі епохи.
В огляді API було внесено пропозицію:
Включіть інше значення ALL
для перерахунку епох, щоб явно вказати, що всі епохи охоплені.
Я думаю, що це має деякі плюси і мінуси.
Плюси:
Явне введення
Мінуси:
Якщо в списку вказано два пункти, скажіть ALL
і Ancient
- що буде взято з програми? Я думаю, це ALL
повинно перевищувати інші значення, але це нова логіка бізнесу.
Якщо я запускаю запит щодо книг, які охоплюють певні епохи, як я б представляв книги, що охоплюють усі епохи? Якщо ALL
також використовується для виводу (використовуючи ту саму логіку), то відповідальність споживача тлумачити ALL
як ["Ancient", "Post Classical", "Modern"]
.
Моє запитання
Я думаю, що наявність нового ALL
викликає більше плутанини, ніж його взагалі немає.
Що ти думаєш? Ви додали б це ALL
значення чи збережете API без нього?