URI RESTful, Creazione di un nuovo nome / uri o aggiunta di un queriparametro

3

Ho una classe Persona con una relazione uno a molti con Occupazione. Una persona nel CRM può avere più impieghi (dati storici).

Il mio URI REST corrente per questa classe è simile al seguente:

http://domain/persons GET [collection]
http://domain/persons/{id} GET [resource]
http://domain/persons/{id}/employments GET [collection]

Per ottenere l'occupazione attiva CORRENTE (quindi l'occupazione in cui l'endDate è NULL) dovrei creare un URI o questo dovrebbe essere fatto usando un QueryParam?

Fondamentalmente dovrei farlo:

http://domain/persons/{id}/employments/current GET [resource]

o

http://domain/persons/{id}/employments?current GET [collection with query param filter]

Penso al secondo (con il queryparam) perché, per quanto comprendo REST, una risorsa dovrebbe essere identificata con un URI non modificabile. Poiché l'attuale posizione occupazionale può cambiare, dovrebbe essere eseguita con un QueryParam.

Quali sono i tuoi suggerimenti?

    
posta Simon 13.04.2013 - 17:04
fonte

2 risposte

3

L'occupazione "corrente" può essere identificata con un url "non modificabile": è sempre a employments/current . È consentito puntare a un oggetto di lavoro diverso proprio come il link di download per la versione "corrente" di una libreria può puntare a diversi file reali man mano che la libreria viene aggiornata mantenendo lo stesso URI. Vorrei usare /employments/current . /employments?current non è corretto in quanto la risorsa è cambiata (da una raccolta di impieghi a un singolo impiego) ma il percorso URI non lo è.

    
risposta data 13.04.2013 - 23:24
fonte
0

Se il codice è simile a questo o più complicato

 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Response;
 @Path("/domain/persons")
 public class UserRestService {

@GET
@Path("{id}/employments/current")
public Response getPersonById(@QueryParam("id") int id) {

   return Response.status(200).entity("getPseronById is called, id : " + id).build();

} 
}

Tutto ciò significa che la prima ipotesi è corretta

Utilizza dominio / persone / {id} / impieghi / attuale

    
risposta data 15.04.2013 - 04:56
fonte

Leggi altre domande sui tag