Al fin después de tanto trabajar pudimos hallar la solución de esta escollo que muchos de nuestros usuarios de este espacio tienen. Si tienes algo más que compartir no dudes en aportar tu información.
Solución:
Yo iría con la opción #1. La razón es: ¿Qué pasa si su lista – Antílope, Pájaro, …, Cebra aumenta en el futuro? Terminará creando puntos finales separados para cada animal.
Se supone que no hay muchas diferencias entre las cargas útiles de /animals/antelopes
y /animals/birds
. Si las diferencias son mayores, deberá crear puntos finales separados para cada carga útil.
Si hay pequeñas diferencias entre las cargas útilessugeriría agregar un mapa adicional que contenga key pares de valores y estos pares son los valores que son específicos para ese tipo de animal en particular.
Como ha mencionado, el mapa adicional puede ser del tipo:
'shared_animal_attribute_1': 'foo',
'shared_animal_attribute_n': 'bar',
'extra_attributes':
'antelopiness': 10
Necesitará una lógica de procesamiento adicional de estos attributes en el lado del servidor. Esto reducirá el dolor de mantener puntos finales separados. Si tiene un esquema para validar, es una implementación sin problemas.
OpenAPI 3.0 (antes Swagger) viene con true soporte para polimorfismo en JSON.
Ha sido posible combinar esquemas usando palabras clave como oneOf, allOf, anyOf y obtener una carga útil de mensaje validada desde el esquema JSON v1.0.
https://spacetelescope.github.io/understanding-json-schema/reference/combining.html
Sin embargo, la composición de esquemas en Swagger se ha mejorado con las palabras clave discriminado (v2.0+) y uno de (v3.0+) para admitir la herencia y el polimorfismo.
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#schemaComposition
He proporcionado un ejemplo de un método POST polimórfico aquí.
Comentarios y calificaciones de la guía
Si conservas algún recelo y capacidad de beneficiar nuestro división eres capaz de ejecutar una anotación y con placer lo interpretaremos.