2016-05-02 5 views
1

in meinem Jersey REST-Schnittstelle arbeitet, gibt es zwei Methoden (ua):Jersey @ abrufen Verfahren nicht mit 2 Pfad Params

@GET 
@Path("{scenarioId}/instance") 
@Produces(MediaType.APPLICATION_JSON) 
public Response getScenarioInstances(
     @Context UriInfo uri, 
     @PathParam("scenarioId") int scenarioId, 
     @QueryParam("filter") String filterString) { 
    // code here 
    return Response.ok(result.toString(), MediaType.APPLICATION_JSON).build(); 
} 

und

@GET 
@Path("{scenarioId}/instance/{instanceId}") 
@Produces(MediaType.APPLICATION_JSON) 
public Response getScenarioInstance(
     @Context UriInfo uri, 
     @PathParam("scenarioId") int scenarioId, 
     @PathParam("instanceId") int instanceId) { 
    // code here 
    return Response.ok(result.toString(), MediaType.APPLICATION_JSON).build(); 
} 

Eine GET-Anfrage über Postman an, sagen,/2/Instanz, ruft die erste Methode auf und führt zu einem JSON-Objekt, das alle Instanzen enthält.

Eine GET-Anforderung an z.B./2/instance/2 ruft jedoch die zweite Methode nicht auf und führt zu einem 404-Fehler.

Fehle ich etwas in der zweiten Methode?

Antwort

0

Okay, das Problem war, dass die REST-Schnittstelle über mehrere Klassen verteilt war, und es gab eine andere Klasse, die eine @Path (".../{scenarioId}/instance/{instanceId}) - Annotation hatte. Die Methode wurde dort aufgerufen, und sie wurde aufgerufen. Offensichtlich führt dies zu einem Konflikt, selbst wenn in dieser Klasse keine @ GET-Methode für diesen Pfad deklariert wurde.

Rückblickend sollte ich diese Frage wahrscheinlich zu der Frage hinzugefügt haben

Verwandte Themen