Я пытаюсь создать службу на основе REST, используя Jersey 2.x/Java с двумя разными методами GET. Они должны иметь одинаковые конечные точки, а одна операция - поиск списка продуктов, и для этого требуется список параметров запроса. Другая операция заключается в загрузке брошюры продукта в виде файла pdf, и это требует только параметра пути. MY Мой класс ресурсов выглядит следующим образом:Возможны несколько операций GET в REST, дифференцированных с помощью queryparam и pathparam?
@Path("/domain")
public class MyResource {
@GET
@Path("/home/products")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({MediaType.APPLICATION_JSON })
public SearchResult loansHomeLoansDocumentsGet(
@QueryParam("productType") String productType,
@QueryParam("productSubType") String productSubType,
@QueryParam("productSource"
@QueryParam("toDate") String toDate) throws Exception {
.......
}
@GET
@Path("/home/products/{productId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({MediaType.APPLICATION_JSON})
public SuccessResponse loansHomeLoansDocumentsDocumentReferenceIdGet(@PathParam("productId") String productId) {
.......
}
......
}
Но когда я убежал, он выбрал 406 недопустимое исключение.
javax.ws.rs.NotAcceptableException: HTTP 406 Not Acceptable
at org.glassfish.jersey.server.internal.routing.MethodSelectingRouter.getMethodRouter(MethodSelectingRouter.java:529) ~[jersey-server-2.22.1.jar:?]
at org.glassfish.jersey.server.internal.routing.MethodSelectingRouter.access$000(MethodSelectingRouter.java:94) ~[jersey-server-2.22.1.jar:?]
at org.glassfish.jersey.server.internal.routing.MethodSelectingRouter$4.apply(MethodSelectingRouter.java:779) ~[jersey-server-2.22.1.jar:?]
at org.glassfish.jersey.server.internal.routing.MethodSelectingRouter.apply(MethodSelectingRouter.java:371) ~[jersey-server-2.22.1.jar:?]
at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:109) ~[jersey-server-2.22.1.jar:?]
at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112) ~[jersey-server-2.22.1.jar:?]
at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112) ~[jersey-server-2.22.1.jar:?]
at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112) ~[jersey-server-2.22.1.jar:?]
at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:92) ~[jersey-server-2.22.1.jar:?]
at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:61) ~[jersey-server-2.22.1.jar:?]
at org.glassfish.jersey.process.internal.Stages.process(Stages.java:197) ~[jersey-common-2.22.1.jar:?]
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:318) [jersey-server-2.22.1.jar:?]
Действительно ли это так, чтобы поддерживать два метода GET? Любые комментарии или ввод приветствуются.
Спасибо.
Вы установили заголовок 'Accept: application/json' в запрос клиента? Нет ничего плохого в ваших определениях метина –
Извинения за поздний ответ. У меня есть это в заголовке. Есть предположения ? – bkrish
Ваш код выглядит хорошо, и он имеет 2 GET. Может ли проблема заключаться в том, что вы используете для JSON? Чтобы убедиться, что это проблема, попробуйте вернуть строку вместо SearchResult/SuccessResponse. – Amber