2016-04-20 5 views
1

У меня есть веб-сервис, который потребляет запрос json и выводит ответ json. У меня проблема, когда клиенту необходимо отправить дополнительный параметр в URL-адрес, который не может находиться в корпусе json. Есть ли способ сделать это?успокоительное сообщение с дополнительными параметрами URL?

Например, здесь метод в @WebService, потребляющий входящий запрос JSon:

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

    } 

Обратите внимание, что «ключ» является жестко закодированным параметром. Мне нужно, чтобы этот параметр передавался ему пользователем в URL-адресе, но не в структуре json. Есть ли способ сделать это?

ответ

1

Просто добавьте параметр аннотированный с @QueryParam к вашей методе:

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

    ... 
} 

и потребляет его с помощью:

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

{ 
    ... 
} 
1

Да, есть!

Вы можете передать его в качестве параметра запроса. Например:

www.yourhost.com/server?key=value

В Java, то вы можете определить его, как это в вашем коде:

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

Так что, если вы звоните, что URL, как сказал раньше, у вас будет то, что вы хотите в переменной значение.

Надеется, что это помогает ..

Приветствию

Смежные вопросы