Création d'API Rest

Bonjour,

J’aimerais créer une API REST, j’ai donc créé un objet externe qui extends RESTServiceExternalObject.

Je ne sais pas comment faire pour renvoyer les chemins url_base/unite, url_base/unite/{id} et url_base/unite/{id}/enfant vers une unique classe ? Faut-il renvoyer chaque chemin vers un objet différent en utilisant URI_MAPPINGS?

Peut-on récupérer l’id facilement? (autrement qu’utiliser split sur l’url).
Est il possible d’utiliser l’orm afin d’effectuer des recherches directement ?

Merci d’avance

List<String> parts = params.getURIParts(getName());

Renvoie la liste des parties d’URI au delà du nom de l’objet Ex: si l’URI d’appel de l’objet externe est /api/ext/MonObjet/a/b/c la liste renvoyée sera a, b, c

Pour ce qui est de l’ “ORM”, il est bien entendu possible d’utiliser les APIs Java des objet métier comme n’importe où dans Simplicite.

Par contre êtes vous sûr de ne pas être en train de réinventer des choses qui existent déjà ?
= soit les APIs REST standards (qui ne nécessitent aucun développement), soit les API REST dites “mappées” qui nécessitent un peu de code ou de config JSON pour se caler sur des nommages et une structure ad hoc de parcours des objets métier (ex: cette API custom dans la démo: module-demo-apis/src/com/simplicite/extobjects/DemoAPIs/DemoAPI1.java at master · simplicitesoftware/module-demo-apis · GitHub)

Implémenter une API REST de base est à réserver à des cas plus spécifiques (i.e. pas juste de l’exposition d’objets métiers)

PS: pour rappel il est possible de mapper les URIs standards sur des URIs alternatives des objets externes grâce au paramètre URI_MAPPING, ex: dans le cas des 2 APIs custom de la démo :

[
	{
		"destination": "/api/ext/DemoAPI1$1",
		"source": "^/demo/v1(.+)$"
	},
	{
		"destination": "/api/ext/DemoAPI2$1",
		"source": "^/demo/v2(.+)$"
	}
]
1 Like

Merci pour votre réponse ainsi que le projet gitHub qui aide énormément. J’essaye de mettre tout ca en place.

Concernant l’ORM, c’était dans un premier temps pour en savoir un peu plus sur celui de simplicité et s’il y avait de la documentation dessus.

La notion d’ objet métier est la notion la plus fondamentale du méta modèle Simplicité.

Il est donc essentiel de parfaitement la maitriser à la fois en termes de paramétrage et en termes d’APIs Java (NB: il y en a plusieurs “couches” avec des syntaxes plus ou moins modernes, Simplicité ayant 20 ans d’historique).

Ce forum de support ne peut pas se substituer à une formation formelle aux fondamentaux de la plateforme (vous pouvez faire cette auto formation ici)

La classe Java de base dont héritent les objets métier est ObjectDB celle-ci permet d’implémenter les hooks mais aussi de manipuler les objets métier.

Une classe de plus haut niveau et plus simple à utiliser est BusinessObjectTool (qu’on obtient sur une instance d’objet via la méthode ObjectDB.getTool().

NB: Dans le cadre de la prochaine version mineure il y aura un wrapper encore plus moderne en mode “builder”.

Les tests unitaires de la démo vous donnent quelques exemple basiques.

Mais à nouveau implémenter spécifiquement un simple parcours d’objets métier dans le cadre d’une API custom est à priori inutile car il existe des APIs standards (et/ou des mécanismes standards de mapping en cas de besoins de structures/nommages plus particuliers), cf. les exemples de ma 1ère réponse.

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.