带有额外url参数的restful post?

时间:2016-04-20 21:52:02

标签: java json web-services jax-rs enunciate

我有一个Web服务,它使用json请求并输出json响应。我有一个问题,客户需要在网址中发送一个不能在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结构。有没有办法做到这一点?

2 个答案:

答案 0 :(得分: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 :(得分:1)

是的!

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

www.yourhost.com/server?key=value

在java中,你可以在代码中定义它:

SELECT First, Last
FROM TableA
NATURAL JOIN TableB
NATURAL JOIN TableC
WHERE TableA.Category=1;

FIRST                LAST
-------------------- --------------------
Joe                  English
Lucy                 Parker
Kate                 Young

因此,如果您按照之前的说法调用该网址,您将在变量中获得所需内容。

希望有所帮助......

干杯