泽西岛服务和持久层

Jersey Service and Persistence Layers

我正在开发一个简单的问答服务 (Jersey JAX-RS)。通过这项服务,到目前为止,我已经想出了以下资源(可能会增加)。

这是我的资源class,满足上述所有路径。

@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。但是,对于应该将调用的方法放在哪个服务和存储库中来处理最后五个请求,我有点困惑。我是否也应该将它们全部放入问题服务和存储库或另一个 classess - 回答服务和存储库?

由于 Answer 和 Question 的多对一关系,我正在考虑后者 (JPQL NamedQuery - SELECT a FROM Answer a WHERE a.question.id = :questionId)。这意味着我的 QuestionResource 中除了 QuestionService 之外还会有 AnswerService。可以吗

请赐教。谢谢。

  • 在 restful API 中,一切都是资源,当涉及到 您认为主要资源和其他资源的关系或 换句话说资源和子资源。

  • 在你的情况下答案是子资源因为你的答案资源不能是没有问题的主要资源或 换句话说,你的资源中的哪一个依赖于另一个 一。你的答案绝对取决于问题