Saya mengembangkan layanan baru di lingkungan layanan mikro. Ini adalah layanan REST. Untuk kesederhanaan, katakanlah jalannya adalah: / buku sejarah
Dan metode POST untuk jalur ini menciptakan buku sejarah baru.
Mari kita asumsikan bahwa buku sejarah mencakup satu atau lebih era dalam sejarah.
Untuk singkatnya, mari kita asumsikan kita hanya memiliki era sejarah manusia berikut:
- Kuno
- Post Klasik
- Modern
Dalam kode saya, saya ingin mewakili mereka dalam enum
.
Badan metode (payload) dalam format JSON, dan harus menyertakan nama bidang eras
. Bidang ini adalah daftar era
nilai, yang dicakup buku ini.
Tubuh mungkin terlihat seperti:
{
"name": "From the cave to Einstein - a brief history review",
"author": "Foo Bar",
"eras": ["Ancient", "Post Classical", "Modern"]
}
Dalam layanan khusus ini, logika bisnisnya adalah:
Jika tidak ada era yang disediakan dalam input, maka buku ini dianggap mencakup semua era.
Dalam ulasan API, saran dibuat:
Sertakan nilai lain ALL
, untuk era enum, untuk secara eksplisit menunjukkan bahwa semua era dicakup.
Saya pikir ada beberapa pro dan kontra.
Pro:
Masukan eksplisit
Cons:
Jika dua item dalam daftar disediakan, katakan ALL
dan Ancient
- apa yang akan diambil dari aplikasi? Saya kira itu ALL
harus mengesampingkan nilai-nilai lain, tapi itu logika bisnis baru.
Jika saya menjalankan kueri, untuk buku yang mencakup era tertentu, bagaimana saya akan mewakili buku yang mencakup semua era? Jika ALL
juga digunakan untuk output (menggunakan logika yang sama), maka tanggung jawab konsumen untuk mengartikannya ALL
sebagai ["Ancient", "Post Classical", "Modern"]
.
Pertanyaan saya
Saya pikir memiliki yang baru ALL
menyebabkan lebih banyak kebingungan daripada tidak memilikinya sama sekali.
Bagaimana menurut anda? Apakah Anda menambahkan ALL
nilai ini atau mempertahankan API Anda tanpanya?