Polymorphisme

Il peut arriver qu’une ressource de type collection contienne plusieurs ressources de types lĂ©gĂšrement diffĂ©rents. Par exemple, des produits de type diffĂ©rents : livres et films.

  • Tout d’abord, il faut harmoniser le modĂšle de la ressource au maximum. Par exemple, livres et films ont un prix, il faut que ce soit la mĂȘme propriĂ©tĂ©. MĂȘme si tel n’est pas le cas dans votre modĂšle de donnĂ©es (Ex. scraping), crĂ©ez des computed fields. On peut imaginer naĂŻvement un computed field price qui calcule le prix Ă  partir de la durĂ©e du film :).

  • Il suffit alors d’ajouter un field type au modĂšle de votre ressource (qu’il faudra dĂ»ment documentĂ©).

  • Cela permet ensuite cĂŽtĂ© client de remapper vers les classes associĂ©es.

  • L’abus de polymorphisme nuit gravement Ă  la santĂ© de votre API et de ses proches.

{
"objects": [
{
"id": "1",
"author": {"id": "3"},
"price": {"amount": 10, "currency": "EUR"},
"type": "book",
},
{
"duration": 5400,
"id": "2",
"price": {"amount": 6, "currency": "USD"},
"type": "movie"
}
]
}

Inheritance and Polymorphism with Swagger

​https://swagger.io/docs/specification/data-models/inheritance-and-polymorphism/​

​