2015-10-15 56 views
0

我目前正在编写一个具有多个基于Jersey的WebServices的应用程序。有一件看起来过于复杂的事情是我用来打电话给他们的路径。泽西Web服务与平坦的路径结构?

例如,用户收到一个包裹给别人,并想让别人知道这一点。这应该全部由一个基本端点ParcelEndpoint处理。

我初始化端点:

@ApplicationPath("parcel4u") 
public class RefApp extends Application { 
    public Set<Class<?>> getClasses() { 
     final Set<Class<?>> returnValue = new HashSet<Class<?>>(); 
     returnValue.add(ParcelEndpoint.class); 
     return returnValue; 
    } 
} 

所以一切都在/parcel4u/将是WebService的方法。

当我尝试给RefApp的每个方法它是自己的@Path(但不是类本身),没有找到。我必须给这个类提供@Path和每种方法。它看起来像这样:

@Path("rest") 
public class ParcelEndpoint { 
    @GET 
    @Path("received") 
    @Produces(MediaType.TEXT_PLAIN) 
    public String received(@PathParam("userid") String forUser){ 
     return "received!"; 
    } 

    @GET 
    @Path("found") 
    @Produces(MediaType.TEXT_PLAIN) 
    public String found(@PathParam("userid") String forUser){ 
     return "found!"; 
    } 
} 

所以我可以调用/parcel4u/REST /接收/parcel4u/REST /发现。有没有办法跳过“休息”部分?

回答

1

那么你可以用@Path("/")注释你的班级,然后用@Path("received")@Path("found")注释你的方法。

+0

嗯,那很简单... :-) –