Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jaxb JAX-RS中的自有资源_Jaxb_Jax Rs - Fatal编程技术网

Jaxb JAX-RS中的自有资源

Jaxb JAX-RS中的自有资源,jaxb,jax-rs,Jaxb,Jax Rs,我试图理解REST和JAX-RS/JAXB,我与图书馆和书籍有着多对多的关系。我想对图书馆拥有的图书执行GET-POST-PUT-DELETE操作,因此GET的url是“libraries/{library\u id}/books/{book\u id}” 我以这种方式实现了它: @Stateless @Path("libraries") public class LibraryFacadeREST extends AbstractFacade<Library> { ...

我试图理解REST和JAX-RS/JAXB,我与图书馆和书籍有着多对多的关系。我想对图书馆拥有的图书执行GET-POST-PUT-DELETE操作,因此GET的url是“libraries/{library\u id}/books/{book\u 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;
   }
   ...
}
@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) {
       ...
    }
}
@无状态
@路径(“库”)
公共类LibraryFacadeREST扩展了AbstractFacade{
...    
@路径(“{library\u id}/booksFacade/”)
public BookFacadeREST getBookFacade(){
返回bookFacadeREST;
}
...
}
@无国籍
@路径(“书籍”)
公共类BookFacadeREST扩展了AbstractFacade{
...
@得到
@路径(“{id}”)
@产生({“application/xml”、“application/json”})
公共图书查找(@PathParam(“id”)长id,@PathParam(“library_id”)长libraryId){
Book Book=super.find(id);
如果(libraryId!=-1){
Library Library=em.find(Library.class,libraryId);
if(book.getLibraries().contains(library)){
还书;
}否则{
返回null;
}
}
返回null;
}
...
}

但我不喜欢它,它很糟糕,有没有更好的方法来管理JAXR中的自有资源

为什么rest资源需要关系仅仅因为相应的实体有关系? 我认为图书资源应该这样:

@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;
   }
   ...
}
@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) {
       ...
    }
}
@Path(“libraries/{library\u id}/books”)
公共类BookFacadeREST扩展了AbstractFacade{
@得到
@路径(“{id}”)
@产生({“application/xml”、“application/json”})
公共图书查找(@PathParam(“id”)长id,@PathParam(“library_id”)长libraryId){
...
}
}

是的,我也这么想。通过这种方式,类更具可读性。