Jersey服务和持久层
问题描述:
我正在开发一个简单的问答服务(Jersey JAX-RS)。有了这项服务,我已经拿出了以下资源(可能会增加)。Jersey服务和持久层
- GET | POST ------------- /问题
- GET | PUT | DELETE - /问题/(编号)
- GET | POST ---- -------- /问题/ {ID} /回答
- GET | PUT | DELETE - /问题/ {} questionId /答案/ {} answerId
这是迎合我的资源类所有上述路径。
@Path("/questions")
public class QuestionResource {
@Inject
private QuestionService questionService;
@GET
...<list of questions>
@POST
...<a new question>
@Path("{id}")
...<a question>
@PUT
@Path("{id}")
...<update a question>
@DELETE
@Path("{id}")
...<delete a question>
@GET
@Path("{id}/answers")
...<list of answers>
@POST
@Path("{id}/answers")
...<a new answer for a question>
@GET
@Path("{questionId}/answers/{answerId}")
...<an answer for a question>
@PUT
@Path("{questionId}/answers/{answerId}")
...<update an answer for a question>
@DELETE
@Path("{questionId}/answers/{answerId}")
...<delete an answer for a question>
}
这有相应的服务和持久层 - QuestionService/QuestionServiceImpl和QuestionRepository/QuestionRepositoryImpl。但是,我有些困惑,我应该把哪些服务和重新投入用来处理最后五个请求的方法。我是否应该将它们都放到问题服务和存储库或其他类别中 - 回答服务和存储库?
我正在考虑后者由于答案和问题的多对一关系(JPQL NamedQuery - 选择一个FROM答案WHERE a.question.id = questionId)。这意味着我的QuestionResource中除了QuestionService之外还会有AnswerService。那会没事的。
请赐教。谢谢。
答
在RESTful API中的一切是一个资源,当谈到 关系你认为是主要的资源和其他资源或者 换句话说资源和子资源。
在你的情况答案是子资源,因为你的答案资源不可能没有问题或在 换句话说,你的资源的一个依赖于其他 一个主要资源。绝对是你的答案取决于问题
我觉得你应该把你方法的主要资源,就像如果你想那么一个特定问题的答案,你的主要资源是问题,你应该把方法的问题类等。 –
谢谢你的快速回答。你介意解释一下为什么? –
我想我不应该包含这个“我正在考虑后者由于答案和问题的多对一关系(JPQL NamedQuery - 选择一个FROM回答一个WHERE a.question.id = questionId)”。对我的问题。它看起来不相关。 –