如何在json中为rest发送2个实体

如何在json中为rest发送2个实体,json,jax-rs,Json,Jax Rs,我正在尝试这样做: @POST@Path/add@consumersmeditype.APPLICATION\u JSON void addstudentincoursedtocoursedtocoursedtocoursedtostudent; 但这不起作用: `放http://localhost:8080/university/api/v1/study/ 内容类型:application/json { 课程:{ 身份证号码:1 }, 学生:{ 身份证号码:5 } }` 如何在我的json中s

我正在尝试这样做: @POST@Path/add@consumersmeditype.APPLICATION\u JSON void addstudentincoursedtocoursedtocoursedtocoursedtostudent; 但这不起作用: `放http://localhost:8080/university/api/v1/study/ 内容类型:application/json

{ 课程:{ 身份证号码:1 }, 学生:{ 身份证号码:5 } }`
如何在我的json中sand 2 entity你不能按你想要的方式发送两个对象,因为你的整个请求都是一个对象,因此,你应该创建一个包含两个所需参数的包装对象。 考虑到这一点,我的建议是创建一个请求dto来包含您的对象,如下代码所示:

public class AddStudentInCourseRequest {

  private DtoCourse course;
  private DtoStudent student;

  // constructor, getters and setters
}
并将您的服务签名更改为:

@POST 
@Path("/add") 
@Consumes(MediaType.APPLICATION_JSON) 
void addStudentInCourse(AddStudentInCourseRequest request) {
  DtoCourse course = request.getCourse();
  DtoStudent student = request.getStudent();

  // remaining business logic
} 
这样,您要发送的请求应该可以工作:

{ 
  "course": { "id": 1 }, 
  "student": { "id": 5 } 
}`

附:只需再次检查http方法。在您的请求中,您使用的是PUT,而在您的方法中,您使用的是@POST注释,您不能以您想要的方式发送两个对象,因为整个请求主体都是一个对象,因此,您应该创建一个包含两个所需参数的包装对象。 考虑到这一点,我的建议是创建一个请求dto来包含您的对象,如下代码所示:

public class AddStudentInCourseRequest {

  private DtoCourse course;
  private DtoStudent student;

  // constructor, getters and setters
}
并将您的服务签名更改为:

@POST 
@Path("/add") 
@Consumes(MediaType.APPLICATION_JSON) 
void addStudentInCourse(AddStudentInCourseRequest request) {
  DtoCourse course = request.getCourse();
  DtoStudent student = request.getStudent();

  // remaining business logic
} 
这样,您要发送的请求应该可以工作:

{ 
  "course": { "id": 1 }, 
  "student": { "id": 5 } 
}`
附:只需再次检查http方法。在您的请求中,您使用的是PUT,在您的方法中,您使用的是@POST注释