Java EE - 找不到 GET 方法
Java EE - Can't find GET method
我有以下资源:
@Path("")
public class ReviewsResource {
@Context
private UriInfo context;
@EJB
private ReviewsReadBeanRemote reviewReadServices;
@EJB
private ReviewsBeanRemote reviewServices;
public ReviewsResource() {
}
@GET
@AuthenticateUser
@Produces({MediaType.APPLICATION_JSON})
@Path("cadets/{id}/reviews")
public Response getApprovedReviewsByCadet(@PathParam("id") Long cadetId)
throws EnviosYaException {
return Response.ok(reviewReadServices.getReviewsByCadet(cadetId, State.APPROVED)).build();
}
@GET
@AuthenticateAdministrator
@Produces({MediaType.APPLICATION_JSON})
@Path("reviews")
public Response getReviews(@QueryParam("state") String state,
@QueryParam("start") Date start, @QueryParam("end") Date end)
throws EnviosYaException {
State stateValue = null;
if (state != null && !state.isEmpty()) {
stateValue = State.valueOf(state);
}
return Response.ok(reviewReadServices.getReviews(stateValue, start, end)).build();
}
@GET
@AuthenticateUser
@Produces({MediaType.APPLICATION_JSON})
@Path("clients/{id}/shipments")
public Response getShipmentsPendingReviewByClient(@PathParam("id") Long clientId)
throws EnviosYaException {
return Response.ok(reviewReadServices.getShipmentsPendingReviewsByClient(clientId)).build();
}
}
我可以像这样使用getReviews
:
https://localhost:8181/Gateway-war/reviews
但是当我这样打别人的时候:
https://localhost:8181/Gateway-war/cadets/1/reviews
我收到 404 未找到。
路径有问题吗?可能是因为我的资源名称?
我还有另一个这样开头的资源:
@Path("cadets")
public class CadetsResource {
问题是它试图看那里吗?
是 - 另一条路径有干扰。一般来说,我将我所有的服务放在 "namespace" 每个 class 中。所以 ReviewsResource 可能看起来像:
@Path("/reviews")
public class ReviewsResource {
然后 class 中的所有内容都具有 URL 的独特部分。您已经在 CadetsResource class 中遵循该模式 - 我建议在任何地方都使用它。
我有以下资源:
@Path("")
public class ReviewsResource {
@Context
private UriInfo context;
@EJB
private ReviewsReadBeanRemote reviewReadServices;
@EJB
private ReviewsBeanRemote reviewServices;
public ReviewsResource() {
}
@GET
@AuthenticateUser
@Produces({MediaType.APPLICATION_JSON})
@Path("cadets/{id}/reviews")
public Response getApprovedReviewsByCadet(@PathParam("id") Long cadetId)
throws EnviosYaException {
return Response.ok(reviewReadServices.getReviewsByCadet(cadetId, State.APPROVED)).build();
}
@GET
@AuthenticateAdministrator
@Produces({MediaType.APPLICATION_JSON})
@Path("reviews")
public Response getReviews(@QueryParam("state") String state,
@QueryParam("start") Date start, @QueryParam("end") Date end)
throws EnviosYaException {
State stateValue = null;
if (state != null && !state.isEmpty()) {
stateValue = State.valueOf(state);
}
return Response.ok(reviewReadServices.getReviews(stateValue, start, end)).build();
}
@GET
@AuthenticateUser
@Produces({MediaType.APPLICATION_JSON})
@Path("clients/{id}/shipments")
public Response getShipmentsPendingReviewByClient(@PathParam("id") Long clientId)
throws EnviosYaException {
return Response.ok(reviewReadServices.getShipmentsPendingReviewsByClient(clientId)).build();
}
}
我可以像这样使用getReviews
:
https://localhost:8181/Gateway-war/reviews
但是当我这样打别人的时候:
https://localhost:8181/Gateway-war/cadets/1/reviews
我收到 404 未找到。
路径有问题吗?可能是因为我的资源名称?
我还有另一个这样开头的资源:
@Path("cadets")
public class CadetsResource {
问题是它试图看那里吗?
是 - 另一条路径有干扰。一般来说,我将我所有的服务放在 "namespace" 每个 class 中。所以 ReviewsResource 可能看起来像:
@Path("/reviews")
public class ReviewsResource {
然后 class 中的所有内容都具有 URL 的独特部分。您已经在 CadetsResource class 中遵循该模式 - 我建议在任何地方都使用它。