2012-05-02 10 views
13

Qual è la differenza tra QueryParam e PathParam in termini di utilizzo?Servizi Java RESTful - Qual è la differenza tra QueryParam e PathParam in termini di utilizzo?

Capisco che i dati possano essere passati al servizio usando entrambi. PathParam è il dato precedente? nell'URL e QueryParam sono i nomi dei valori dopo?. Ma mi chiedo come vengono usati esattamente questi.

+0

La tua domanda riguarda più * come * ciascuno è usato, o vuoi davvero chiedere * quando * (cioè, in quali circostanze) codificherai qualcosa come parte del percorso vs come parametro di ricerca? –

+0

Kevin, intendo chiedere quando dovrei codificare qualcosa come parte del percorso vs come parametro di ricerca? Grazie in anticipo .. – Anil

+0

Ora sono più interessato a sapere quando dovrei codificare qualcosa come parte del percorso param vs come parametro di query. – Anil

risposta

4

Probabilmente non c'è una sola risposta corretta alla domanda in pratica, dal momento che ci sono così tanti schemi URL in uso in "the wild". Tuttavia un modo utile per guardarlo sarebbe in termini di elaborazione URL REST. In REST (REpresentational State Transfer), l'idea è di essere in grado di identificare in modo univoco ogni risorsa a cui si desidera fornire l'accesso. In uno schema REST comune, la porzione di percorso dell'URL può essere pensata come un insieme di coordinate in N-spazio (cioè, x, y, z => // myApp/x/y/z) e i parametri di query sono ulteriori specificatori. Questi ulteriori specificatori potrebbero essere utilizzati come criteri di ricerca per specifiche di percorso incomplete, per restituire un elenco di risorse corrispondenti.

Vedere il following question per ulteriori esempi di URL REST.

EDIT: @marcok ha una buona risposta tecnica, ma come il commento aggiornato esposto, ti sembra più interessato a quando scegliere uno sopra l'altro. In genere, se si sta creando un'API RESTful "pura", qualsiasi elemento che fa parte del percorso deve identificare in modo univoco le risorse in base alla propria identità. Spesso, questo potrebbe avere il tuo URL che termina con un valore ID come parte del percorso per identificare in modo univoco una risorsa.

Tuttavia, se la propria API espone direttamente la capacità di cercare/filtrare per attributi (probabilmente esclusi gli ID), è più probabile che la codifichi come parametro di query.

Questi sono solo esempi, e ci sono opinioni diverse su cosa comporta una buona API, e in particolare su come deve essere puramente RESTful un'API.

41

@QueryParam viene utilizzato per accedere a coppie chiave/valore nella stringa di query dell'URL (la parte dopo?). Ad esempio nell'URL http://example.com?q=searchterm, è possibile utilizzare @QueryParam("q") per ottenere il valore di q.

@PathParam viene utilizzato per abbinare una parte dell'URL come parametro. Ad esempio in un URL del modulo http://example.com/books/{bookid}, è possibile utilizzare @PathParam("bookid") per ottenere l'ID di un libro.

Vedere this page per un esempio utilizzato in JAX-RS.

+0

Domanda correlata. Spero che aiuti gli altri. http://stackoverflow.com/questions/25037347/server-side-j2ee-webservice-gets-null-values-on-parameters/25038686#25038686 – Siddharth

Problemi correlati