Estou desenvolvendo uma aplicação para venda de ingressos e gostaria da seguinte distribuição de URIs:
/ticketicando/administrador/16/eventos -> possibilita ao administrador adcionar / remover / alterar eventos baseado no método HTTP (rest).
/ticketicando/eventos -> mostra a lista de eventos para usuarios não logados.
Para isso fiz os seguintes controllers:
AdministradorController.class
@Resource
@RequestScoped
public class AdministradorController {
....
@Post
@Path(/administrador/{id}/eventos)
public void adicionarEvento(Evento evento) { }
@Delete
@Path(/administrador/{id}/eventos)
public void removerEvento(Long id) { }
@Put
@Path(/administrador/{id}/eventos)
public void alterarEvento(Evento evento) { }
}
EventoController.class
@Resource
@RequestScoped
public class EventoController {
....
@Get
@Path(/eventos)
public void listarEventos() { }
}
O problema é que tenho vários casos de uso relacionados ao administrador, por exemplo, gerenciar clientes, gerar relatorios, gerenciar publicacões, e acredito que o controller do administrador vai ficar meio sujo. Como solução pensei em agrupar os controles, ou seja, todos os casos de uso relacionados a entidade Eventos (adicionar, alterar, remover, listar…) ficaria em EventoController ai eu lembrei das convenções de URI do VRaptor e percebi que isso não faria muito sentido. Enfim, estou muito confuso sobre como eu deveria distribuir meus controles e essa é uma aplicação média, acredito que uma boa arquitetura seja fundamental.