Estoy desarrollando un nuevo servicio en un entorno de microservicios. Este es un servicio REST. Por simplicidad, digamos que la ruta es: / historyBooks
Y el método POST para este camino crea un nuevo libro de historia.
Supongamos que un libro de historia cubre una o más épocas de la historia.
Por brevedad, supongamos que solo tenemos las siguientes eras de la historia humana:
- Antiguo
- Post Clásico
- Moderno
En mi código, me gustaría representarlos en un enum
.
El cuerpo del método (la carga útil) está en formato JSON y debe incluir un nombre de campo eras
. Este campo es una lista de era
valores que cubre este libro.
El cuerpo puede verse así:
{
"name": "From the cave to Einstein - a brief history review",
"author": "Foo Bar",
"eras": ["Ancient", "Post Classical", "Modern"]
}
En este servicio específico, la lógica de negocios es:
Si no se proporcionan eras en la entrada, entonces se considera que este libro cubre todas las eras.
En la revisión de la API, se hizo una sugerencia:
incluir otro valor, ALL
para la enumeración de eras, para indicar explícitamente que todas las eras están cubiertas.
Creo que tiene algunas ventajas y desventajas.
Pros:
Entrada explícita
Contras:
Si se proporcionan dos elementos en la lista, diga ALL
y Ancient
: ¿qué se tomará de la aplicación? Supongo que eso ALL
debería anular los otros valores, pero esa es una nueva lógica de negocios.
Si ejecuto una consulta, para libros que cubren épocas específicas, ¿cómo representaría un libro que cubre todas las épocas? Si ALL
también se usa para la salida (usando la misma lógica), entonces es responsabilidad del consumidor interpretar ALL
como ["Ancient", "Post Classical", "Modern"]
.
Mi pregunta
Creo que tener lo nuevo ALL
causa más confusión que no tenerlo en absoluto.
¿Qué piensas? ¿Agregaría este ALL
valor o mantendría su API sin él?