Jersey JAX-RS资源的可能重载列表

时间:2016-01-20 13:53:09

标签: java jersey jax-rs jersey-2.0

我正在使用Jersey来实现JAX-RS资源。我在Stack Overflow,各种博客和Jersey User Guide上看到了很多不同的例子。

我想知道给定资源处理程序的不同重载是什么。是否有单一来源记录这些内容?

例如,以下内容处理HTTP POST请求。请求正文被捕获为MultivaluedMap

@POST
public Response httpPostRequest(MultivaluedMap<String, String> body)
{
    ...
}

或者,以下重载会将正文捕获为单个String

@POST
public Response httpPostRequest(String body)
{
    ...
}

还有其他重载。有多少人,他们在哪里记录?

1 个答案:

答案 0 :(得分:0)

这只是一个普通的Java方法,它有一个或多个与之关联的注释。该方法的签名对泽西没有特别的限制。

话虽如此,您需要确保将各种注释(例如@Consumes@PathParam@QueryParam@PathParam)应用于数据类型泽西岛知道如何映射。例如,Jersey将String映射到long@Consumes(MediaType.APPLICATION_XML)没有问题。 Jersey也可以使用具有JAXB注释的Java类,因此您的方法签名可以包含与@GET @Produces(MediaType.APPLICATION_XML) @Path("somepath") public Foos getFoosByQuery(@PathParam("businessName") String businessName, @PathParam("businessUnitName") String businessUnitName, @PathParam("fileType") String fileType, @QueryParam("from") String fromString, @QueryParam("to") String toString, @DefaultValue("10") @QueryParam("interval") int intervalMinutes, @DefaultValue("1000") @QueryParam("limit") int limit, @DefaultValue("false") @QueryParam("errors") boolean errors) { 结合的JAXB类型,Jersey会将请求内容从XML文档转换为JAXB Java类。

例如:

String

在这里,我们看到我们有许多参数(类型为intboolean@PathParam),返回类型为JAXB注释的POJO。 Jersey从路径中提取@QueryParam值,从查询字符串中提取 int flags = DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_NO_YEAR; String s = DateUtils.formatDateTime(this, System.currentTimeMillis(), flags); 值,并将返回值转换为XML文档,并将其作为响应内容包含在内。

我还会注意到方法的名称可以是我们想要的任何东西,因此“重载”的概念与Jersey正交。适用普通的Java重载规则。

从这个例子中可以明显看出,你无法枚举可以与Jersey一起使用的所有可能的“重载”。

对于泽西可以做的所有可能的类型映射,或许有一个不同的问题可能更符合您的要求。