9

例:クラス Course と Teacher が多対 1 の関係にある場合、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"
      } ]
    }

ありがとう!

4

3 に答える 3

14

このようなものはどうですか:

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 book で提案されている方法です。

于 2013-07-31T21:30:04.587 に答える
0

PUT の代わりにhttpie PATCHを使用するとうまくいきます。

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

繰り返しますが、これは PUT では機能しません。

于 2017-05-05T12:31:55.520 に答える
0

コースのカスケーディングを確認する必要があると思います。コースを更新している場合、コースにカスケード更新またはすべてが割り当てられている場合は、教師も更新する必要があるためです。

于 2013-08-01T04:58:42.900 に答える