如何发送 json 中的 2 个实体进行休息
How send 2 entity in json for rest
我正在尝试这样做:
@POST @Path("/add") @Consumes(MediaType.APPLICATION_JSON) void addStudentInCourse(DtoCourse course, DtoStudent student);
但这不起作用:
`PUT http://localhost:8080/university/api/v1/study/
内容类型:application/json
{
“课程”: {
“编号”:1
},
“学生”: {
“编号”:5
}
}`
我如何在我的 json
中打磨 2 个实体
您不能像您希望的那样发送两个对象,因为您的请求的整个主体都是一个对象,因此,您应该创建一个具有两个所需参数的“包装对象”。
考虑到这一点,我的建议是根据以下代码创建一个请求 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 }
}`
Ps.: 只需仔细检查 http 方法。在您的请求中,您使用的是 PUT,而在您的方法中,您使用的是 @POST 注释
我正在尝试这样做:
@POST @Path("/add") @Consumes(MediaType.APPLICATION_JSON) void addStudentInCourse(DtoCourse course, DtoStudent student);
但这不起作用:
`PUT http://localhost:8080/university/api/v1/study/
内容类型:application/json
{ “课程”: { “编号”:1 }, “学生”: { “编号”:5 } }` 我如何在我的 json
中打磨 2 个实体您不能像您希望的那样发送两个对象,因为您的请求的整个主体都是一个对象,因此,您应该创建一个具有两个所需参数的“包装对象”。 考虑到这一点,我的建议是根据以下代码创建一个请求 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 }
}`
Ps.: 只需仔细检查 http 方法。在您的请求中,您使用的是 PUT,而在您的方法中,您使用的是 @POST 注释