I have a class like:
public class TestService {
@Path("/v1/test1/list")
public Response getTest1() {
}
@Path("/v1/test2/list")
public Response getTest2() {
}
}
If I do not give @Path annotation at Class level, then this class is not recognized as a REST resource, but I cannot give "/v1" Path for this class since there is already another class with @Path("/v1").
What are possible workaround, to make this class to be recognized as a Rest Resource
A @Path
annotation is required to define a resource class. Quoting the Jersey documentation:
Root resource classes are POJOs (Plain Old Java Objects) that are annotated with
@Path
, have at least one method annotated with@Path
or a resource method designator annotation such as@GET
,@PUT
,@POST
,@DELETE
.
As already mentioned by Justas, one possible solution is to add the @Path("")
annotation to the TestService
class. However, it doesn't smell good:
@Path("")
public class TestService {
@GET
@Path("/v1/test1/list")
public Response getTest1() {
...
}
@GET
@Path("/v1/test2/list")
public Response getTest2() {
...
}
}
I don't know what your project looks like, but instead of having a single class, I would have two classes, designed as following:
@Path("/v1/test1")
public class TestService1 {
@GET
@Path("/list")
public Response getTest1() {
...
}
}
@Path("/v1/test2")
public class TestService2 {
@GET
@Path("/list")
public Response getTest2() {
...
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With