【问题标题】:restful post with additional url parameters?带有附加 url 参数的宁静帖子?
【发布时间】:2016-04-20 21:52:01
【问题描述】:

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

【问题讨论】:

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


    【解决方案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
    
    { 
        ...
    }
    

    【讨论】:

      【解决方案2】:

      是的!

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

      www.yourhost.com/server?key=value

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

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

      因此,如果您如前所述调用该 url,您将在变量 value 中获得所需的内容。

      希望对你有帮助..

      干杯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-05
        • 1970-01-01
        • 2013-02-28
        • 1970-01-01
        • 2012-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多