Stateful Entities & Webservices best practice

Hallo,

ich habe eine Entity, welche einen Lifecycle durchleben. Diese können mit einem Zustandsautomat abgebildet werden. Dieser Zustandsautomat besitzt 9 Events, wobei nur 7 davon via Rest getriggert werden sollen. Die anderen 2 (u.a. create) werden durch ein anderes System getriggert.

Grundsätzlich alles kein Problem. Ich möchte nur Fragen, welche die beste Möglichkeit ist, diese Events mit Rest zur Verfügung zu stellen.

Spontan hätte ich für jedes Event einen Webservice implementiert in der Form:
Code:
POST /myentities/{id}/action1
POST /myentities/{id}/action2
POST /myentities/{id}/action3
POST /myentities/{id}/action4
POST /myentities/{id}/action5
POST /myentities/{id}/action6
POST /myentities/{id}/action7
Oder eben etwas in der Art:
Code:
POST /myentities/{id}/{action}
Was ich auf jeden Fall vermeiden wollen würde wäre
Code:
POST /myentities/{id} body: updatedentity
Was ist hier eure Erfahrung? Gibt es ein best practice und vielleicht noch ganz andere Ansätze dafür?



Viele Grüße
MM
 
Die Events sind einfach nur ein "jetzt in Zustand X wechseln"?


Ist der aktuelle Zustand Teil der Entität?
Dann ginge sowas wie PATCH /myentities/42 body: {state: state_5}

Ansonsten könnte man die Entität in den Zustand pushen: PATCH /state/5 body: {id: entity_42}

Keine Ahnung ob das praktikabler ist, aber kam mir grad so in den Sinn...
 
Die Events sind einfach nur ein "jetzt in Zustand X wechseln"?
Nein, es müssen auch unerwünschte Statusübergänge verhindert werden.

Ist der aktuelle Zustand Teil der Entität?
Ja.

Dann ginge sowas wie PATCH /myentities/42 body: {state: state_5}
Es ist eigentlich nicht nur ein Zustand, sondern 3. Daher kommt Patch eher weniger in Frage. Aber vielleicht ein Put? :rolleyes: Jedoch sind die Events die Gleichen.

Ich danke dir aber für deine Antwort. Es gibt mir das Gefühl, dass es für diesen Ausgangspunkt nicht zwingend ein Best Practice gibt und ich vermutlich mit meinem Ansatz ganz gut unterwegs bin.

Aktuell tendiere ich zu dem Ansatz mit dem Action Parameter und einem switch-case anstatt 7 einzelner Webservices.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben