新しいプロジェクトが近づいていて、RESTに夢中になっています。ただし、インターフェイスは非常に限られているようです。RESTはオブジェクト固有の相互作用をサポートしていますか、それとも単純なCRUDに限定されていますか?
例:学校管理アプリにはStudentオブジェクトがあります。次のことができるはずです。
RegisterNewStudent (some data)
各学生オブジェクトは、ビジネスオペレーションを処理する必要があります。
Student.FixName(name data)
Student.ChangeSchool(school data)
Student.Graduate(classrank data)
Student.ChangePassword(password data)
私はメッセージキューを使用してCQRSを実装してきましたが、これらはそれぞれ個別のコマンドになります。ただし、RESTでは、次のように制限されているようです。
PUT Student (all data about student)
POST Student/id (update student record with any/all fields changed)
DELETE Student/id
ここで何かが足りませんか?ライフサイクル/状態変更ロジックはRESTfulソリューションのどこに実装されますか?生徒の学校の登録を変更するには、名前を変更するのとは異なるロジック(および場合によっては異なる権限)が必要です。クライアントに任意/すべてのフィールドの「更新」を投稿させてから、クライアントが意図している操作を推測する必要がありますか?
//編集:
これは私が苦労しているようなものですか?
PUT /Students {data about new student}
POST /Students/314/School {data about different school}
POST /Students/314/Name {data to fix name, ie add middle name}
POST /Students/314/Password {data for new password}
等?