2016-04-20 1 views
1

J'ai un service web qui consomme une requête json et sort une réponse json. J'ai un problème où le client doit envoyer un paramètre supplémentaire dans l'URL qui ne peut pas être dans le corps JSON. Y-a-t-il un moyen de faire ça?poste reposant avec des paramètres d'URL supplémentaires?

Par exemple, voici la méthode d'un @WebService qui consomme la demande JSON entrant:

@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); 

    } 

Notez que « clé » est un paramètre codé en dur. J'ai besoin que ce paramètre lui soit passé par l'utilisateur dans l'URL, mais pas dans la structure json. Y-a-t-il un moyen de faire ça?

Répondre

1

Il suffit d'ajouter un paramètre annoté avec @QueryParam à votre méthode:

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

    ... 
} 

et de le consommer en utilisant:

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

{ 
    ... 
} 
1

Oui il y a!

Vous pouvez le transmettre en tant que paramètre de requête. Par exemple:

www.yourhost.com/server?key=value

En java, yo peut le définir comme ceci dans votre code:

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

Donc, si vous appelez cette URL comme dit avant, vous aurez ce que vous voulez dans la variable valeur.

Hope it helps ..

Vive