2012-05-02 7 views
13

Was ist der Unterschied zwischen QueryParam und PathParam in Bezug auf ihre Verwendung?Java-RESTful-Services - Was ist der Unterschied zwischen QueryParam und PathParam hinsichtlich ihrer Verwendung?

Ich verstehe, dass Daten zu Service mit beiden von ihnen übergeben werden können. PathParam ist die Daten voraus? In der URL und QueryParam sind Name Wert Daten nach?. Aber ich frage mich, wie genau diese verwendet werden.

+0

Ist Ihre Frage mehr über * wie * jeder verwendet wird, oder wollen Sie wirklich fragen * wann * (d. H. Unter welchen Umständen) würden Sie etwas als Teil des Pfads vs als Abfrageparameter codieren? –

+0

Kevin, ich meine zu fragen, wenn ich etwas als Teil des Pfades vs als Abfrageparameter codieren sollte? Vielen Dank im Voraus .. – Anil

+0

Ich bin jetzt mehr interessiert zu wissen, wann ich etwas als Teil des Pfadparam vs als Abfrageparameter codieren sollte. – Anil

Antwort

4

Es gibt wahrscheinlich keine einzige richtige Antwort auf die Frage in der Praxis, da es so viele verschiedene URL-Schemata in "the wild" gibt. Eine hilfreiche Methode wäre jedoch die REST-URL-Verarbeitung. In REST (Representational State Transfer) besteht die Idee darin, jede Ressource eindeutig identifizieren zu können, auf die Sie zugreifen möchten. In einem allgemeinen REST-Schema könnte der Pfadabschnitt der URL als eine Menge von Koordinaten im N-Raum gedacht werden (dh x, y, z => // myApp/x/y/z) und die Abfrageparameter sind weitere Spezifizierer. Diese weiteren Spezifizierer könnten als Suchkriterien für unvollständige Pfadspezifikationen verwendet werden, um eine Liste übereinstimmender Ressourcen zurückzugeben. Weitere Informationen zu REST-URLs finden Sie unter following question.

EDIT: @marcok hat eine gute technische Antwort, aber wie die aktualisierte Kommentar ausgesetzt, Sie scheinen mehr daran interessiert, wenn man über die andere zu wählen. Wenn Sie eine "reine" REST-konforme API erstellen, sollten alle Ressourcen, die Teil des Pfads sind, Ressourcen eindeutig anhand ihrer Identität identifizieren. Dies kann dazu führen, dass Ihre URL mit einem ID-Wert endet, der Teil des Pfads zur eindeutigen Identifizierung einer Ressource ist.

Wenn Ihre API jedoch direkt die Möglichkeit bietet, nach Attributen zu suchen/zu filtern (wahrscheinlich mit Ausnahme von IDs), würden Sie diese eher als Abfrageparameter codieren.

Dies sind nur Beispiele, und es gibt unterschiedliche Meinungen darüber, was eine gute API mit sich bringt, und insbesondere, wie rein RESTful eine API sein muss.

41

@QueryParam wird verwendet, um auf Schlüssel/Wert-Paare in der Abfragezeichenfolge der URL zuzugreifen (der Teil nach dem?). Zum Beispiel können Sie in der URL http://example.com?q=searchterm@QueryParam("q") verwenden, um den Wert q zu erhalten.

@PathParam wird verwendet, um einen Teil der URL als Parameter abzugleichen. Zum Beispiel können Sie in einer URL des Formulars http://example.com/books/{bookid}@PathParam("bookid") verwenden, um die ID eines Buchs zu erhalten.

Ein Beispiel, wie es in JAX-RS verwendet wird, finden Sie unter this page.

+0

Verwandte Frage. Hoffe es hilft anderen. http://stackoverflow.com/questions/25037347/server-side-j2ee-webservice-gets-null-values-on-parameters/25038686#25038686 – Siddharth

Verwandte Themen