Слои обслуживания и постоянства Джерси

Я занимаюсь разработкой простой службы вопросов и ответов (Jersey JAX-RS). С этим сервисом я дошел до следующего ресурса (может увеличиться).

  • ПОЛУЧИТЬ | ПОЧТА ------------- / Вопросы
  • GET | PUT | DELETE - /questions / {id}
  • GET|POST ------------ /questions / {id} / answers
  • GET | PUT | DELETE - /questions/{questionId}/answers/{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 - ВЫБЕРИТЕ ОТ ОТВЕТА ГДЕ a.question.id =:questionId). Это будет означать, что у меня также есть AnswerService помимо QuestionService в моем QuestionResource. Будет ли это хорошо.

Пожалуйста, просветите меня. Спасибо.

1 ответ

Решение
  • В остальных API-интерфейсах все является ресурсом, и когда речь идет о связи, вы рассматриваете основной ресурс и другие ресурсы или, другими словами, ресурс и подресурс.

  • В вашем случае ответ является подресурсом, потому что ваш ресурс ответа не может быть основным ресурсом без вопросов или, другими словами, какой из ваших ресурсов зависит от другого. Абсолютно ваш ответ зависит от вопроса

Другие вопросы по тегам