Java JAX-RS资源方法签名
我正在使用Jersey 2.19实现REST API 我想知道如何从Jersey用户指南或其他规范中了解我应该如何知道我的JAX-RS资源的签名应该是什么 例如,对于处理POST请求的资源,我已经使用我找到的示例对以下不同的签名进行了实验Java JAX-RS资源方法签名,java,rest,jersey,jax-rs,Java,Rest,Jersey,Jax Rs,我正在使用Jersey 2.19实现REST API 我想知道如何从Jersey用户指南或其他规范中了解我应该如何知道我的JAX-RS资源的签名应该是什么 例如,对于处理POST请求的资源,我已经使用我找到的示例对以下不同的签名进行了实验 public Response myResource() public Response myResource(String param) 这两种方法都是有效的,因为它们编译并运行,并且在正确的条件下调用该方法 有人能告诉我在哪里指定的签名应该是什么以及参数
public Response myResource()
public Response myResource(String param)
这两种方法都是有效的,因为它们编译并运行,并且在正确的条件下调用该方法
有人能告诉我在哪里指定的签名应该是什么以及参数的含义吗?这似乎是一个直截了当的问题,但我找不到答案。正如您所说,这是一个
POST
请求,因此它应该从请求中接收一些数据。所以您应该期望参数中有一些内容。
公共响应myResource(字符串参数)
但参数的类型
应取决于实际使用的@注释,如:-
@使用(MediaType.APPLICATION\u JSON)
:这需要JSON
输入或
@使用(MediaType.APPLICATION\u XML)
:这需要XML
输入或
@使用(MediaType.TEXT\u PLAIN)
:这需要一个字符串
纯文本输入您对方法进行注释,如中所述。
另外,不要忘记用@Path
@Path("MyService")
public class MyService
{
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/User")
public List<User> getUser()
{
//Return all users
}
//Inserts new User in JSON Format
@Get
@Path("/User/UserId/{userid}")
public User getUserById(@PathParam("userid") String userid)
{
//Find User with ID in Database and return it
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public User getUserById(User user)
{
//add user to your Database or something
}
}
@Path(“MyService”)
公共类MyService
{
@得到
@产生(MediaType.APPLICATION_JSON)
@路径(“/User”)
公共列表getUser()
{
//返回所有用户
}
//以JSON格式插入新用户
@得到
@路径(“/User/UserId/{UserId}”)
公共用户getUserById(@PathParam(“userid”)字符串userid)
{
//在数据库中找到ID为的用户并将其返回
}
@职位
@使用(MediaType.APPLICATION_JSON)
公共用户getUserById(用户)
{
//将用户添加到数据库或其他内容
}
}
如果您现在希望以json格式获取所有用户,则必须调用:
http://ip-address/MyService/user
你的问题有一个确切的答案,但要束紧腰。因为如果泽西岛的文件过于含糊,那么它们的方向正好相反:在我看来,这是一个炫耀抽象代数博士学位的人写的
所有问题的答案都在JAX-RS规范中,Jersey就是其中的一个实现。你可以下载它(在你签名离开你的灵魂之后)
关于如何选择其中一种方法而不是另一种方法的具体答案太详细了,我无法在这里粘贴,但它在“3.7.2请求匹配”部分下
我甚至不会尝试粘贴用于设置潜在方法列表以匹配请求的数学规则,然后从中进行选择。这样就不可能把它们格式化成可读的格式
对于更一般的问题,更容易访问“3.3资源方法”一节。以下是一些精选摘录:
3.3资源方法
。。。
JAX-RS定义了一组
常见HTTP方法的请求方法标识符:@GET、@POST、,
@放置、@DELETE、@HEAD和@OPTIONS。
3.3.1可见性:只有公共方法可以作为资源方法公开。
3.3.2参数:资源方法最多必须有一个实体参数
3.3.3返回类型:资源方法可以返回void、Response、GenericEntity或其他Java类型
等等。该链接文档中有一些示例没有参数,而参数是字节数组。此外,没有一个例子像你列出的那样。我试图扩展我的答案,并用一个服务添加和返回用户来做一个例子。你告诉Jersey你的方法消耗和产生了什么;你告诉泽西你的服务路径和服务方法谢谢你的回复。但我认为你没有抓住重点。我已设法在各种网站上找到与您提供的类似的示例。但我的问题是,这些签名的官方地点在哪里?官方地点是我已经链接的官方文件。谢谢,但这并没有真正回答我的问题。通常,任何未注释的内容都被视为请求实体体的一部分。您只能拥有其中一个。其余的方法参数需要相应地注释。如果您想知道方法参数有哪些可能的注释,以及它们的用途,那么这是一个相当广泛的主题,答案是分散的。