【问题标题】:Access Request object from REST从 REST 访问请求对象
【发布时间】:2009-06-25 11:09:43
【问题描述】:

是否可以在 JAX-RS 下以 REST 方法访问 Request 对象?

我才发现

@Context Request request;

【问题讨论】:

    标签: java web-services


    【解决方案1】:

    在 JAX-RS 上,您必须使用 @Context 注释 Request 参数:

     @GET  
     public Response foo(@Context Request request) {
    
     }
    

    您也可以选择注入:

    【讨论】:

      【解决方案2】:

      为了详细说明@dfa 对替代方案的回答,我发现这比在每个资源方法签名上指定变量更简单:

      public class MyResource {
      
        @Context
        private HttpServletRequest httpRequest;
      
        @GET  
        public Response foo() {  
          httpRequest.getContentType(); //or whatever else you want to do with it
        }
      }
      

      【讨论】:

      • 当我尝试从 Junit 调用 REST api 时,上述任何一项都不起作用。请求为空。
      • 这在 Dropwizard @DebaprasadJana 的更高版本中可能不起作用 - 这适用于 Dropwizard 0.7.x
      • 这种方法是否存在并发问题?
      • @Dragas 对应用程序的每个请求都会有自己的线程,所以不会有并发的问题。
      • 但是包含@Path注解的控制器是单例的,不是吗?这是否意味着如果您的请求花费的时间足够长,最终您的线程将使用另一个请求元数据进行更新?
      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 2017-05-28
      • 1970-01-01
      • 2012-07-25
      • 2021-12-25
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多