簡體   English   中英

如何在Spring-data rest中更新引用對象?

[英]How to update reference object in Spring-data rest?

示例:課程和教師有多對一的關系,如何通過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 with payload

    {
      "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"
      } ]
    }

謝謝!

這樣的事情怎么樣:

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書中提出的一種方式。

我想你應該檢查Cascading for Course。 因為如果您要更新課程,那么如果要為您的課程分配級聯更新或全部,它也應該更新您的老師。

使用httpie PATCH而不是PUT對我有用

http PATCH :7070/study-spring-data/course/2 teacher="http://localhost:7070/study-spring-data/teacher/2"

同樣,這不適用於PUT。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM