JAX-RS, параметры пути не работают
Я пытаюсь передать параметр через GET в метод REST.
@GET
@Path("{id}")
public Response getUser(@PathParam("id") String id) {
Query qry = em.createQuery("from User c WHERE id = :user_id");
qry.setParameter("user_id", id);
List<User> results = qry.getResultList();
if(results.size() > 0) {
return Response.ok(results.get(0),MediaType.APPLICATION_JSON_TYPE).build();
} else {
return Response.serverError().status(Response.Status.NOT_FOUND).build();
}
}
Если я позвоню через Rest Client с помощью:
client = ClientBuilder.newClient();
Response response = client.target(TestPortProvider.generateURL("/user")+"/abc").request().get(Response.class);
тогда метод вызывается, но параметр пуст. Если я удалю "abc"
из ссылки GET метод не вызывается. Также, если я удалю @Path("{id}")
это тоже не работает. Кажется, что есть параметр, но он пуст без причины. Может быть, кто-то может помочь мне решить проблему.
С уважением
4 ответа
К сожалению, причиной был неправильный импорт для PathParam. так что большое примечание к моему столу... если непроверенные вещи не работают... проверьте ваш импорт, который генерируется вашей IDE.
{}
не требуется в параметре метода, просто дайте имя. Попробуйте следующее:
public Response getUser(@PathParam("id") String id)
Импорт может быть по умолчанию:
import javax.websocket.server.PathParam;
Замените его на один из API JAX-RS:
import javax.ws.rs.PathParam;
Причина, по которой это не сработало бы, - неправильный импорт для PathParam. Поэтому импортируйте javax.ws.rs.PathParam и проверьте его снова.