Non sto inviando questa risposta come risposta, poiché si tratta semplicemente di un caso limite su currently accepted answer, che è quello che ho anche usato. Nel mio caso (Jersey 1.19) /list/{taskid:.+}
non funzionava per il caso limite di parametri variabili zero. La modifica della RegEx a /list/{taskid:.*}
si è occupata di ciò. Vedi anche this article (che sembra applicabile).
Inoltre, su cambiando l'espressione regolare per indicatore di cardinalità per *
(invece di +
) Ho anche avuto a che fare a livello di codice con il caso di stringhe vuote come avrei tradurre il List<PathSegment>
in un List<String>
(a passare nel mio DB-accesso codice).
Il motivo per cui sto convertendo da PathSegment
a String
è che non volevo una classe dal pacchetto javax.ws.rs.core
per inquinare il mio codice di accesso ai dati.
Ecco un esempio completo:
@Path("/listDirs/{dirs:.*}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response listDirs(@PathParam("dirs") List<PathSegment> pathSegments) {
List<String> dirs = new ArrayList<>();
for (PathSegment pathSegment: pathSegments) {
String path = pathSegment.getPath();
if ((path!=null) && (!path.trim().equals("")))
dirs.add(pathSegment.getPath());
}
List<String> valueFromDB = db.doSomeQuery(dirs);
// construct JSON response object ...
}
fonte
2016-05-20 09:04:17
Grazie, questo è probabilmente il più vicino che riesco anche a che così ora ho solo bisogno di mettere lì regexp che corrisponde numeri e barre per example.com/ws/list/1 o esempio.com/ws/list/1/2/3/4/5/6 – zeratul021