restful post 有额外的 url 参数?

restful post with additional url parameters?

我有一个 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);

    }

请注意 "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?键=值

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

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

因此,如果您如前所述调用 url,您将在变量 value.

中获得所需内容

希望对您有所帮助..

干杯