Собственный ресурс в JAX-RS - PullRequest
       3

Собственный ресурс в JAX-RS

0 голосов
/ 21 февраля 2012

Я пытаюсь понять REST и JAX-RS / JAXB, у меня есть отношения многие ко многим между библиотеками и книгами. Я хочу выполнить операции GET-POST-PUT-DELETE для книги, принадлежащей библиотеке, поэтому URL для GET - "библиотеки / {library_id} / books / {book_id}" Я реализовал это так:

@Stateless
@Path("libraries")
public class LibraryFacadeREST extends AbstractFacade<Library> {

  ...    

   @Path("{library_id}/booksFacade/")
   public BookFacadeREST getBookFacade() {
     return bookFacadeREST;
    }
  ...
}

@Stateless
@Path("books")
public class BookFacadeREST extends AbstractFacade<Book> {
   ...
    @GET
    @Path("{id}")
    @Produces({"application/xml", "application/json"})
    public Book find(@PathParam("id") Long id, @PathParam("library_id") long libraryId) {

       Book book = super.find(id);

       if (libraryId != -1) {
          Library library = em.find(Library.class, libraryId);

          if (book.getLibraries().contains(library)) {
             return book;
          } else {
             return null;
          }
       }

      return null;
   }
   ...
}

Но мне это не нравится, это отстой, есть ли лучшие способы управления собственными ресурсами в jaxrs?

1 Ответ

0 голосов
/ 22 февраля 2012

Зачем другим ресурсам нужны отношения только потому, что соответствующие организации имеют отношения?Я думаю, что книжный ресурс должен таким образом:

@Path("libraries/{library_id}/books")
public class BookFacadeREST extends AbstractFacade<Book> {
    @GET
    @Path("{id}")
    @Produces({"application/xml", "application/json"})
    public Book find(@PathParam("id") Long id, @PathParam("library_id") long libraryId) {
       ...
    }
}
...