示例:课程课程和教师有多对一的关系,如何通过Spring-data rest来改变某个课程的老师?
GET http://localhost:7070/study-spring-data/course/2
响应:
{
"name" : "CSCI-338 Hardcore Java",
"_links" : [ {
"rel" : "course.Course.teacher",
"href" : "http://localhost:7070/study-spring-data/course/2/teacher"
}, {
"rel" : "self",
"href" : "http://localhost:7070/study-spring-data/course/2"
} ]
}
GET http://localhost:7070/study-spring-data/course/2/teacher
响应:
{
"_links" : [ {
"rel" : "course.Course.teacher",
"href" : "http://localhost:7070/study-spring-data/course/2/teacher/1"
} ]
}
如上所示,课程2与教师1相关,如何将教师改为教师2?
我尝试过:
成功更新课程名称:
PUT http://localhost:7070/study-spring-data/course/2
有效载荷
{
"name" : "CSCI-223 Hardcore C++",
}
尝试更新参考对象教师时不成功:
PUT http://localhost:7070/study-spring-data/course/2/teacher
有效载荷
{
"_links" : [ {
"rel" : "course.Course.teacher",
"href" : "http://localhost:7070/study-spring-data/course/2/teacher/2"
} ]
}
谢谢!
答案 0 :(得分:13)
这样的事情怎么样:
curl -v -X PUT -H "Content-Type: text/uri-list" \
-d "http://localhost:7070/study-spring-data/teacher/1" \
http://localhost:7070/study-spring-data/course/123/teacher
这是O'Reilly的Spring Data书中提出的一种方式。
答案 1 :(得分:0)
我认为你应该检查Cascading for Course。因为如果您要更新课程,那么如果要为您的课程分配级联更新或全部,它也应该更新您的老师。
答案 2 :(得分:0)
使用httpie PATCH代替PUT对我有用:
http PATCH :7070/study-spring-data/course/2 teacher="http://localhost:7070/study-spring-data/teacher/2"
同样,这不适用于PUT。