gpt4 book ai didi

java - 修复了 Rest 服务输入参数中的名称

转载 作者:行者123 更新时间:2023-12-01 20:19:29 24 4
gpt4 key购买 nike

我通过 Jax-RSCXF 实现了休息 Web 服务。

@Path("/StudentServices")
@Produces({"application/json"})
public class Student
{
@POST
@Path("/save")
public String persist(@QueryParam("StudentName") String name,
@QueryParam("StudentAge") String age)
{
System.out.println("*******************************");
System.out.println(" Incomming student with = " + name + " " + age);
System.out.println("*******************************");
return "Hello " + name;
}
}

实际上,我想使用以下网址调用服务:localhost:9000/StudentServices/save正文消息为 JSON:{"StudentName": "John", "StudentAge": "30"}

但是当请求到达 persist 方法时,其输入为 null 或为空。我检查了其他一些方法,例如 Jackson 注释、JAXB 注释,但没有人正确工作。

此外,当我的服务有输入原始类型和字符串时,我想修复参数的名称,因为当我使用类进行输入时,它工作得很好。

最佳答案

您不能使用@QueryParam 读取请求正文。

正如 @QueryParam 文档中所指定的,它将 HTTP 查询参数的值绑定(bind)到资源方法参数、资源类字段或资源类 bean 属性。值是 URL 解码的,除非使用 Encoded 注释禁用此功能。因此,如果您像下面这样转发请求,您现有的代码应该可以工作:

localhost:9000/StudentServices/save?StudentName=John& StudentAge=30

现在如果你想接受 json 请求那么你必须创建单独的 javaBean。

@XmlRootElement
public class StudentRequest {
private String studentName;
private int studentAge;

// getter and setter
}

在你的 Controller 中。 (即学生。)

@Path("/StudentServices")
public class Student {
@POST
@Path("/save")
@Produces({"application/json"})
public String persist(StudentRequest studentRequest)
{
//your custom logic
}
}

还可以在方法级别指定您的生产者或消耗者注释。它提供了从其他方法返回某些其他内容类型的灵 active 。

关于java - 修复了 Rest 服务输入参数中的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45160556/

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