2016-08-23 2 views
0

Ich habe einen REST-Service, der einige Elemente in meiner Datenbank erstellt. Diese Elemente werden in der Servermethode "statisch" erstellt und nicht vom Client angegeben, sondern nach Abschluss des Vorgangs an den Client zurückgegeben.REST-Dienst ohne Senden von Objekt, GET, POST oder PUT?

Wenn ich erkläre den Dienst als PUT/POST (weil ich will, um neue Dinge schaffen) der Client benötigt, um ein Objekt zu senden, die auch null sein muss, weil der Client kein Objekt zu senden hat (alles getan wird, im Server).

Wenn ich erklären ihn als GET Ich werde nicht ein Null-Objekt senden müssen, aber meine GET-Methode zu schaffen Dinge, die ich von einem GET-Methode nicht

So erwarten Was ist der beste Ansatz in einem solchen Fall: PUT, POST oder GET?

+0

Sie nur wollen, dass diese Elemente Schöpfung nur auf dem Client-Aufruf auszulösen? Wie wäre es mit dem Erstellen von Elementen, bevor eine Anfrage an Sie gestellt wird und eine GET-Methode dem Kunden zur Verfügung gestellt wird, mit der Sie diese zurückgeben können? – Naveen

+0

Was passiert, wenn Sie die Ressource mehrmals aufrufen? Sollten die Objekte bei jedem Aufruf erstellt werden (Nebeneffekt) oder sollen die Objekte nur einmal erstellt werden? Im Grundfall können Sie 'PUT' oder' GET' aufgrund ihrer idempotenten Semantik nicht verwenden. In letzterem Fall würde ich @NaveenAechan Vorschlag bevorzugen –

+0

@NaveenAechan Ihr Ansatz könnte in meinem Fall funktionieren und es könnte einige Probleme wie mehrere Erstellung vermeiden, wie Roman Vottner darauf hingewiesen. Ich werde es versuchen. Trotzdem würde ich gerne wissen, ob ich GET, POST oder PUT für den Ansatz verwenden sollte, den ich in der Frage – iberbeu

Antwort

1

Hier ist die Art, wie ich das erwartet hatte.

  1. Verwenden Sie ServletContextListener und bei der Initialisierung des Kontexts rufen Sie Ihre Logik auf. Refer this link
  2. Und für den Benutzer eine URL http://yoururl/get/created/stuff offen legen und die Elemente, die Sie zuvor erstellt haben, zurückgeben. Kann sein, von db ziehen und in json/xml/Klartext usw. konvertieren

Einige weitere references

1

POST without payload ist möglich, reagiert vielleicht auf Ihren Ansatz.

+0

Obwohl POST ohne Payload entsprechend der Spezifikation möglich ist (genau wie GET mit einer Payload), haben viele Proxies und Webserver Probleme damit. Wenn Sie nach Kompatibilität streben, ist es ratsam, zumindest einige Inhalte zuzulassen, die ignoriert werden. – Tomas

Verwandte Themen