我有一个新项目即将推出,并且受到 REST 的启发。但是,它似乎有一个非常有限的界面。REST 是否支持特定于对象的交互,还是仅限于简单的 CRUD?
示例:学校管理应用具有学生对象。它应该能够:
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}
ETC?