gpt4 book ai didi

java - 具有多个参数的 JAX-RS Post 方法

转载 作者:行者123 更新时间:2023-11-29 04:48:06 26 4
gpt4 key购买 nike

我想使用 Jersey 实现制作一个 JAX-RS 网络服务。我需要一个带有 3 个参数的 post 方法。

@POST
@Path ("/addData")
@produce(MediaType.Application_Json)
@Consume(MediaType.Application_JSON)
public User addData(int id, String name, String pass){
User u = new User();
u.setId(id);
u.setName(name);
u.setPass(pass);
return u;
}

@POST
@Path ("/addData")
@produce(MediaType.Application_Json)
@Consume(MediaType.Application_JSON)
public User addSingleData(int id){
User u = new User();
u.setId(id);
return u;
}

有一个单独的用户类如下:

public class User{
int id;
String name;
String pass;

// here are the getter setter and constructors

}

首先,我可以使用 jersey-media-moxy-2.3.jar 文件转换为 JSON(我不想使用 maven)。因为这个 jar 文件没有将内容转换为 json,但是如果我使用 maven,它在 post 方法中没有参数的情况下工作正常。

其次,如果我只使用一个参数,如何获取方法主体中的参数。即第二种方法

第三,如何在post方法中使用多个参数。

第四,我还需要上传和下载图片。怎么做。

最后,我无法获取 json 格式的数据。

注意:我正在为 Android 移动设备制作 Web 服务。我将通过 andorid 使用它。

最佳答案

对于 RESTful API,您不应该依赖通常的 Web 应用程序参数传递样式,

... URL..?param=value

您应该以一种访问资源有意义的方式形成一个 url:

例如:

@POST
@Path("/{courseId}/subjects/{"subjectId"}/description")
public Message get(@PathParam("courseId") String courseId,
@PathParam("subjectId") String subjectId) {
// ....
}

此资源端点提供了一种在特定类(class)下发布特定主题的新描述的方法。这就是您如何在同一个 Post 请求中访问多个 Path 参数。

另一方面,如果您正在谈论如何获取“用户”类中所有字段的值,那么您应该考虑使用@XmlRootElement 注释该类

@XmlRootElement
public class User{
int id;
String name;
String pass;

//empty contractors is mandatory in addition to the public getter and
// setters
public User(){
}

// here are the getter setter and constructors

}

现在,如果您使用 POST 方法发送如下内容:[JSON 格式]:

{
"id":"123"
"name":"user name"
"pass":"pass"
}

jersey 将使用请求正文中的数据创建 User 类的实例。这就是为什么您需要在 User 类中强制使用空构造函数的原因,jersey 将首先使用空构造函数创建该类的实例,并调用每个字段的 setter 来设置值。

有了它,如果您简单地将 User 放入您的方法的参数中,您就会将对象传递给您的方法。

@POST
@Path ("/addData")
@produce(MediaType.Application_Json)
@Consume(MediaType.Application_JSON)
public User addData(User newUser){
//do something
return newUser;
}

关于java - 具有多个参数的 JAX-RS Post 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36395759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com