jaxrs/resteasy自定义方法参数

jaxrs/resteasy自定义方法参数,rest,jax-rs,resteasy,Rest,Jax Rs,Resteasy,我想让我的JaxRs资源获取一个自定义方法参数,该参数是根据请求中的某个参数构建的。 与身体创造的另一个物体结合使用的东西。 比如: @Resource public class MyResource { @Path("/resource") public Object resource(MyResourceDTO body, AConfiguration conf){ } } 从请求中的某些头创建的a配置 我怎样才能做到 我需要一些类似于斯普林·韦

我想让我的JaxRs资源获取一个自定义方法参数,该参数是根据请求中的某个参数构建的。
与身体创造的另一个物体结合使用的东西。 比如:

 @Resource
 public class MyResource {
      @Path("/resource")
      public Object resource(MyResourceDTO body, AConfiguration conf){

      }
 }
从请求中的某些头创建的
a配置

我怎样才能做到

我需要一些类似于斯普林·韦伯勒的东西:


对于我的案例
MyResource
是一个子资源,该方法在这种情况下也应该有效…

您可以使用下面的方法。您的
conf
对象已作为
json
从客户端发送。如果
conf
对象中的参数必须动态更改,则必须遵循第二种方法

 @Resource
 public class MyResource {

      @POST
      @Consumes("application/json")
      @Path("/resource")
      public Object resource(AConfiguration conf){
      // This method can receive multiple objects here. Currently it receives
      // conf object only as the payload of the post method.  
      }

 }
要动态更改conf对象,可以发送
json
String

      public Object resource(String confJson){
      // Collect parameters manually here.
      }
pom.xml
中,您应该包括:

  <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>2.3.1.GA</version>
  </dependency>

如果添加DTO作为资源方法的参数,那么JAX-RS运行时将尝试将请求体转换为这种类型。您还可以添加任何
@xParam
参数,如
@QueryParam
作为资源方法的参数。(唯一的例外是
@FormParam
,因为它们位于正文中)

如果要将多个参数封装在一个对象中,可以使用。您的配置类可能如下所示:

public class Configuration {

    @QueryParam("foo")
    private String foo;

    @HeaderParam("bar")
    private String bar;

    // getters + setters

}
@POST
public Response someMethod(Dto dto, @BeanParam Configuration conf) {}
可以这样使用:

public class Configuration {

    @QueryParam("foo")
    private String foo;

    @HeaderParam("bar")
    private String bar;

    // getters + setters

}
@POST
public Response someMethod(Dto dto, @BeanParam Configuration conf) {}

携带物品的尸体没有问题。您想通过标题传递配置对象吗?我想从HttpRequest创建
a配置
,比如获取2个标题和1个查询参数,或者类似的东西,在这里定制对象的创建基本上解决了您的用例。干杯我已经发送了一个Json,conf应该是从headers@rascio我又加了一个例子。检查一下。但是有了
@Context
注释,我可以使用自定义对象吗?要创建
a配置
,我需要对一些头文件和查询字符串参数进行一些计算。我想将计算对象传递给资源,而不是原始标题和参数。@rascio如果您想将计算对象传递给资源,我认为您必须实现一个
预侦听器
()。否则,我将修改我的示例,以便您可以在资源中处理它。