Java Jersey JAX-RS资源的可能重载列表
我正在使用Jersey实现一个JAX-RS资源。我已经看到了很多关于堆栈溢出、各种博客和应用程序的不同示例 我想知道对于给定的资源处理程序,不同的重载可以是什么。是否有一个记录这些信息的单一来源 例如,以下代码处理HTTP POST请求。请求主体被捕获为一个Java Jersey JAX-RS资源的可能重载列表,java,jersey,jax-rs,jersey-2.0,Java,Jersey,Jax Rs,Jersey 2.0,我正在使用Jersey实现一个JAX-RS资源。我已经看到了很多关于堆栈溢出、各种博客和应用程序的不同示例 我想知道对于给定的资源处理程序,不同的重载可以是什么。是否有一个记录这些信息的单一来源 例如,以下代码处理HTTP POST请求。请求主体被捕获为一个多值映射 @POST public Response httpPostRequest(MultivaluedMap<String, String> body) { ... } 还有其他重载。它们有多少个以及记录在哪里?这
多值映射
@POST
public Response httpPostRequest(MultivaluedMap<String, String> body)
{
...
}
还有其他重载。它们有多少个以及记录在哪里?这只是一个普通的Java方法,它有一个或多个与之关联的注释。方法的签名没有Jersey对其施加的特定约束 话虽如此,您仍需要确保将各种注释(例如,
@产生
,@消耗
,@PathParam
,@QueryParam
)应用于Jersey知道如何映射的数据类型。例如,Jersey在将@PathParam
映射到String
或long
时没有问题。Jersey还可以处理具有JAXB注释的Java类,因此您的方法签名可以包括一个JAXB类型,该类型与@Consumes(MediaType.APPLICATION_XML)
组合,Jersey将请求内容从XML文档转换为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) {
在这里,我们看到有许多参数(包括类型String
、int
和boolean
)和返回类型,即JAXB注释的POJO。Jersey从路径中提取@PathParam
值,从查询字符串中提取@QueryParam
值,并将返回值转换为XML文档,并将其作为响应的内容
我还将注意到,方法的名称可以是我们想要的任何名称,因此“重载”的概念与Jersey正交。通常的Java重载规则适用
从这个例子中可以明显看出,您不能列举所有可能用于Jersey的“重载”
关于Jersey可以执行的所有可能的类型映射,可能有一个不同的问题更符合您的要求。我不明白签名如何可以没有约束。
@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) {