Saltar al contenido

Herencia y polimorfismo en el modelado de API REST

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *