Macht REST immer sinn?

eskimo328

Aktives Mitglied
Webanwendung basiert auf JBoss AS + JAX-RS + AngularJS

Funktionen der Anwendung sind u.a.:

  • Ticket erstellen
  • Ticket anzeigen: Alle details zu einem Ticket anzeigen
  • Ticket schließen: Ticket status wird geändert zusätzlich kann noch ein Kommentar eingegeben werden
  • Ticket zuweisen: Ticket Bearbeiter wird geändert zusätzlich kann noch ein Kommentar eingegeben werden. Server sendet E-Mail Benachrichtigung an neuen Bearbeiter

Die entsprechende RESTful API könnte einfach wie folgt aussehen:

Code:
#Ticket erstellen 
POST /tickets/

#Ticket anzeigen
GET  /tickets/:id 

# Ticket an neuen Mitarbeiter zuweisen
POST /tickets/:id/assign 

# Ticket schließen
POST /tickets/:id/close

Allerdings wäre das nicht ganz im Sinne von REST.

Wie würde das korrekt im Sinne von REST gemacht werden? Denn was mir nicht so ganz klar ist, ich könnte zwar mit einem POST /tickets/:id das Ticket ändern. Allerdings muss je nachdem was geändert wird, der Server unterschiedliche Verarbeitungen starten. Z. B. wenn der Bearbeiter geändert wird, wird zusätzlich eine E-Mail Benachrichtigung gesendet.
Oder es kommt auch drauf an, wer das Ticket erstellt. Wenn ein Mitarbeiter das Ticket erstellt, wird eine E-Mail Benachrichtigung an den Kunden versendet, wenn ein Kunde das Ticket erstellt, wird eine E-Mail Benachrichtigung an den Mitarbeiter gesendet.
 
Zuletzt bearbeitet:

JeromeC

Aktives Mitglied
Allerdings wäre das nicht ganz im Sinne von REST.

Was ist nicht im Sinne von REST? REST sagt nur aus, welches Verhalten erwartet wird, nicht wie die Implementation dahinter aussieht. GET fordert eine Ressource an, usw. Was aber nötig ist, um die GET-Anfrage auszuführen, ist nicht eingeschränkt (Mails schreiben, Hühner füttern, etc.). Man geht nur meistens davon aus, dass REST-Services zustandslos sind, also keine Werte oder Parameter in sich halten.
Übrigens: Das Erstellen eines Ticket wäre für mich auf den ersten Blick ein PUT-Befehl.
Überblickerweise kommt auch erst der Methodenname und dann die Parameter, also /tickets/assign/:id.
 

Ähnliche Java Themen

Neue Themen


Oben