Suite à demande par mail.
La possibilité d’embedder des listes d’objet liés sur les services REST mappés à été mise en place sur la bracnhe master
(actuellement P24)
Une variante de la méthode addRefField
a été ajoutée (cf. https://docs.simplicite.io/4.0/javadoc-alpha/com/simplicite/webapp/services/RESTMappedObjectsExternalObject.html#addRefField(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,boolean,java.lang.String)) qui permet de:
- nommer explicitement le lien (c’est optionnel, si on met
null
c’est le nommage de l’objet lié qui est utilisé), ce nommage spécifique du lien n’est utile que pour lever les ambiguïtés s’il y a 2 liens (ou plus) entre 2 mêmes objets… - choisir le mode embedded ou non
Exemple d’utilisation (sur la démo):
Avec le mapping suivant
boolean embed = true; // or false
addObject("suppliers", "DemoSupplier");
addField("suppliers", "code", "demoSupCode");
addField("suppliers", "name", "demoSupName");
addObject("products", "DemoProduct", "Products");
addField("products", "reference", "demoPrdReference");
addField("products", "name", "demoPrdName");
addRefField("products", "suppliers", "supplierId", "demoPrdSupId", null, embed, null);
le resultat d’un search (filtré pour ne retourner qu’un record supplier pour plus de lisibilité /suppliers?code=PEAR
) est:
- En mode non embedded (
false
):
{"suppliers": [{
"row_id": "4",
"code": "PEAR",
"name": "Pear Inc",
"_links": [{
"rel": "products",
"href": "suppliers/4/products"
}]
}]}
- Et en mode embedded (
true
):
{"suppliers": [{
"row_id": "4",
"code": "PEAR",
"name": "Pear Inc",
"products": [
{
"row_id": "7",
"supplierId": "4",
"reference": "REF001",
"name": "Tablet"
},
{
"row_id": "8",
"supplierId": "4",
"reference": "REF002",
"name": "Smartphone"
}
]
}]}
Le résultat d’un select (sur le même record supplier que ci-dessus /suppliers/4
):
- En mode non embedded (
false
):
{
"row_id": "4",
"code": "PEAR",
"name": "Pear Inc",
"_links": [{
"rel": "products",
"href": "suppliers/4/products"
}]
}
- Et en mode embedded (
true
):
{
"row_id": "4",
"code": "PEAR",
"name": "Pear Inc",
"products": [
{
"row_id": "7",
"supplierId": "4",
"reference": "REF001",
"name": "Tablet"
},
{
"row_id": "8",
"supplierId": "4",
"reference": "REF002",
"name": "Smartphone"
}
]
}