Java 使用其他url参数的restful post?

Java 使用其他url参数的restful post?,java,json,web-services,jax-rs,enunciate,Java,Json,Web Services,Jax Rs,Enunciate,我有一个web服务,它使用json请求并输出json响应。我有一个问题,客户需要在url中发送一个附加参数,而这个参数不能在json正文中。有办法吗 例如,@WebService使用传入json请求的方法如下: @POST @Path("/bsghandles") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public BsgHandleRespo

我有一个web服务,它使用json请求并输出json响应。我有一个问题,客户需要在url中发送一个附加参数,而这个参数不能在json正文中。有办法吗

例如,@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);

    }

请注意,“key”是一个硬编码参数。我需要用户在url中传递该参数,而不是json结构。有办法吗?

只需在方法中添加一个带有
@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

{ 
    ...
}
是的,有

您可以将其作为查询参数传递。例如:

www.yourhost.com/server?key=value

在java中,您可以在代码中这样定义它:

@GET
@Path("/server")
public Response myMethod(@QueryParam("key") String value) { //your RESTFULL code}
因此,如果您像前面所说的那样调用该url,您将在变量值中得到所需的内容

希望能有帮助

干杯