jaxrs/resteasy自定义方法参数
我想让我的JaxRs资源获取一个自定义方法参数,该参数是根据请求中的某个参数构建的。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配置 我怎样才能做到 我需要一些类似于斯普林·韦
与身体创造的另一个物体结合使用的东西。 比如:
@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如果您想将计算对象传递给资源,我认为您必须实现一个预侦听器
()。否则,我将修改我的示例,以便您可以在资源中处理它。