我在struts2中使用一个动作将json发布到REST API。
现在发布Jan对象我做如下
JSONObject.fromObject(Object object).toString
,postmethod.setRequestEntity()
,那么REST API应该如何接收数据呢?
以下是代码段:
@POST
@Path("addUser")
@Produces("text/plain")
@Consumes(MediaType.APPLICATION_JSON)
public String addUser() {
};
答案 0 :(得分:1)
@XmlRootElement(name="user")
添加到我的模型 - 用户然后在行动中我将用户转换为xml,当然你应该设置Content-Type", MediaType.APPLICATION_ATOM_XMl
@POST
@Path("addUser")
@Produces("text/plain")
@Consumes(MediaType.APPLICATION_ATOM_XML)
public String addUser(User user) {}
添加
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
到web.xml
最后你可以得到用户。
答案 1 :(得分:0)
如果我按照自己的想法理解您的问题,要在REST API中接收JSON字符串,您可以使用JAXB。您可以参考以下内容。
REST API
@POST
@Path("addUser")
@Produces("text/plain")
@Consumes(MediaType.APPLICATION_JSON)
public String addUser(Student s) {
//Your logic here
return "user added";
};
学生的JAXB表示。
public class Student {
String id;
String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
String age;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Student(String id, String name, String age) {
this.id = id;
this.name = name;
this.age = age;
}
public Student() {
}
}
发布Student JSON String时,您将在addUser方法中获取Raw Student对象。如果我的理解是错误的,请纠正我。
答案 2 :(得分:0)
如果你想使用带有jersey和apache-cxf的Rest API(JAX-WS-RS)访问后端代码中的正文部分,那么你需要配置你的其他类包。
@Path("/student") //path of rest package of class
@Consumes("application/json") //If you want to consumed produced json
@Produces("application/json") //If you want to produced json
public class StudentRest{
Student student=new Student();
@GET
@Path("returnstudent")
public Student ReturnStudentMethod()
{
return student;
}
//if you want to receive or produced some specific type then write
@GET
@Produced("application/pdf")
@Path("returnpdffile")
public Response ReturnPdfFile()
{
return file;
}
}
And also you need to set web.xml if you are using jaxrs with jersey
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>