Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAX-RS资源方法签名_Java_Rest_Jersey_Jax Rs - Fatal编程技术网

Java JAX-RS资源方法签名

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) 这两种方法都是有效的,因为它们编译并运行,并且在正确的条件下调用该方法 有人能告诉我在哪里指定的签名应该是什么以及参数

我正在使用Jersey 2.19实现REST API

我想知道如何从Jersey用户指南或其他规范中了解我应该如何知道我的JAX-RS资源的签名应该是什么

例如,对于处理POST请求的资源,我已经使用我找到的示例对以下不同的签名进行了实验

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你的方法消耗和产生了什么;你告诉泽西你的服务路径和服务方法谢谢你的回复。但我认为你没有抓住重点。我已设法在各种网站上找到与您提供的类似的示例。但我的问题是,这些签名的官方地点在哪里?官方地点是我已经链接的官方文件。谢谢,但这并没有真正回答我的问题。通常,任何未注释的内容都被视为请求实体体的一部分。您只能拥有其中一个。其余的方法参数需要相应地注释。如果您想知道方法参数有哪些可能的注释,以及它们的用途,那么这是一个相当广泛的主题,答案是分散的。