Oop 服务中的实体关系
我有这样的模型关系:用户,任务,每个用户都可以创建自己的任务,并且可以查看所有任务。所以很明显,我将使用带有方法的TaskService,getSortedTasks(字符串值),等等。 我不知道在哪里应该有createTask(Task Task),updateTask(lond id,Task Task)方法-在TaskService或UserService中,因为我被告知应该有REST API,看起来像: 相当于Oop 服务中的实体关系,oop,jpa,design-patterns,entity,spring-rest,Oop,Jpa,Design Patterns,Entity,Spring Rest,我有这样的模型关系:用户,任务,每个用户都可以创建自己的任务,并且可以查看所有任务。所以很明显,我将使用带有方法的TaskService,getSortedTasks(字符串值),等等。 我不知道在哪里应该有createTask(Task Task),updateTask(lond id,Task Task)方法-在TaskService或UserService中,因为我被告知应该有REST API,看起来像: 相当于 post users/{id}/tasks 因为“任务属于特定用户”。因
post users/{id}/tasks
因为“任务属于特定用户”。因此,我无法在单独的服务、每个实体的api和公共服务之间进行选择,api whreUser是关系所有者。您应该实现在任务资源中创建任务的端点 两者皆有可能: POST your_root.com/api/{userId}/tasks/--->创建任务并从uri中获取创建者的值 但你也可以这样做: 发布您的_root.com/api/tasks/-->在这种情况下,您必须通过JSON或XML告诉服务器是谁创建了任务。身体可能看起来像这样,即:
{
"author": "user A",
"assingee": null,
"headline": "Login Page for my app",
"text":"Build fancy login page"
}
最后一个变体和我的首选:
发布您的_root.com/api/{userId}/tasks/
和身体里的作者:
{
"authorId":"12"
"author": "user A",
"assingee": null,
"headline": "Login Page for my app",
"text":"Build fancy login page"
}
最后一个变量的优点是,您可以检查uri中的userId是否等于主体的authorId。因此,您可以避免此具有特定Id的请求是意外发出的
希望能有所帮助。谢谢。那么,在最后一种情况下,我应该在UserService中也使用“createUserTask(id,task)”,还是可以在UserRestController中使用TaskService??我真的不太明白面向对象的原则“服务实体”案例。你能帮我吗?所有创建任务的服务都是任务服务的一部分。不要被与用户的关系弄糊涂了。您必须通过taskservice创建任务。taskservice还必须检查用户是否存在。如果这是真的,那么服务将创建任务。否则,您的服务将响应404-找不到用户。
{
"authorId":"12"
"author": "user A",
"assingee": null,
"headline": "Login Page for my app",
"text":"Build fancy login page"
}