2016-04-20 13 views
1

Ich habe einen Web-Service, der eine JSON-Anfrage konsumiert und eine JSON-Antwort ausgibt. Ich habe ein Problem, bei dem der Kunde einen zusätzlichen Parameter in der URL senden muss, der nicht im JSON-Text enthalten sein kann. Gibt es eine Möglichkeit, das zu tun?Restful Post mit zusätzlichen URL-Parametern?

Zum Beispiel, hier ist die Methode eines @WebService, der die eingehenden json Anfrage verbraucht:

@POST 
    @Path("/bsghandles") 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    public BsgHandleResponse getBsgHandlesJson(BsgHandleRequest obj) { 
     HttpServletRequest request = getRequestObject(); 

     return processGetBsgHandleByRateCode("key", obj.getRateCodes(), obj.getCorp(), 
      obj.getHeadend(), obj.getEquipmentProtocolAiu(), obj.getEquipmentTypeAiu(), request); 

    } 

Beachten Sie, dass „Schlüssel“ ist ein hartcodierte Parameter. Ich brauche diesen Parameter vom Benutzer in der URL, aber nicht die JSON-Struktur. Gibt es eine Möglichkeit, das zu tun?

Antwort

1

nur einen Parameter mit @QueryParam auf Ihre Methode kommentierte hinzufügen:

@POST 
@Path("/bsghandles") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public BsgHandleResponse getBsgHandlesJson(@QueryParam("key") String key, 
              BsgHandleRequest obj) { 

    ... 
} 

Und verbrauchen sie mit:

POST /api/bsghandles?key=value HTTP/1.1 
Content-Type: application/json 
Accept: application/json 

{ 
    ... 
} 
1

Ja gibt es!

Sie können es als Abfrageparameter übergeben. Zum Beispiel:

www.yourhost.com/server?key=value

In Java können yo es wie folgt in Ihrem Code definieren:

@GET 
@Path("/server") 
public Response myMethod(@QueryParam("key") String value) { //your RESTFULL code} 

Also, wenn Sie diese URL nennen, wie gesagt zuvor haben Sie, was Sie wollen in der Variablen Wert.

Hoffe, es hilft ..

Prost

Verwandte Themen