2016-04-20 63 views
1

我有一個Web服務,它使用json請求並輸出一個json響應。我有一個問題,那就是客戶需要在url中發送一個附加參數,這個參數不能在json主體中。有沒有辦法做到這一點?寧靜的職位與額外的網址參數?

例如,這裏是消耗傳入的JSON請求的@WebService的方法:

@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

是的,有!

您可以將它作爲查詢參數傳遞。例如:如果你調用URL作爲所述

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

所以:

www.yourhost.com/server?key=value

在java中,喲可以在代碼中定義它像這樣之前,您將在變量的值中獲得所需的值。

希望它可以幫助..

乾杯