Draft '/api/drafts/' という名前のリソースと、Revision '/api/revisions/' という名前の別のリソースがあるとします。それらは 1 対 1 の関係で関連付けられています。
リビジョンを作成するには、「/api/revisions/」でリクエスト POST を行い、引数にドラフト ID を指定します。これを行うJSON APIの方法は
POST /api/revisions/
Content-type: application/json
{
"data": {
"type": "revision",
"links": {
"draft": { "linkage": { "id": 1, "type": "draft" } }
}
}
}
これにより Revision リソースが作成され、Draft id=1 に関連付けられます。したがって、応答は次のようになります。
201 Created
Content-type: application/json
{
"data": {
"id": 1,
"type": "revision",
"links": {
"draft": { "linkage": { "id": 1, "type": "draft" } }
}
}
}
ただし、 POST /api/revisions/ には副作用があります。ドラフトの属性を変更します。
例)draft.revision_count: 0 => 1
ただし、クライアントはリビジョンの作成を要求し、結果として作成されたリビジョン リソースを受け取るだけであり、ドラフトのデータが変更されたかどうかを知る方法はありません。
私の質問は、リビジョンを作成することによって他のリソースが影響を受け、更新する必要があることをクライアントに知らせる責任があるのはサーバーですか?