Я пытаюсь выполнить параметризованное получение (также известное как поиск). Я не уверен, почему это не работает. Мы используем последние версии трикотажных зависимостей (1.14), и до сих пор все интерфейсы REST работали нормально. Простой ОТДЫХ:
@Path("/some/path")
@Component
public class SomeRest {
@GET
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces({ MediaType.APPLICATION_JSON })
public Response getAll(MultivaluedMap<String, String> queryParams) {
// extract params, do search, return response as JSON
// (Using ObjectMapper.writeValue() to convert object to JSON String)
}
}
Я думаю, что работа метода не важна, поскольку в ошибке ясно указано, что он не может войти в него в первую очередь из-за какого-то неподдерживаемого типа носителя (когда я ввожу свой путь в браузере):
HTTP Status 415 - Unsupported Media Type
Выход:
SEVERE: A message body reader for Java class javax.ws.rs.core.MultivaluedMap, and Java type javax.ws.rs.core.MultivaluedMap<java.lang.String, java.lang.String>, and MIME media type application/octet-stream was not found.
The registered message body readers compatible with the MIME media type are:
....
У кого-нибудь есть идея? Спасибо!
изменить:
Моя цель — реализовать поиск, используя параметры запроса с ресурсом GET. Так что, когда я вызываю /some/path
, я получаю все результаты, но если я вызываю some/path?limit=10&offset=10
, я получаю второй набор из 10. Я мог бы решить эту конкретную проблему с параметрами запроса, но я также хочу иметь возможность определить, где параметры предложения, такие как name=foo, в та же карта параметров. И эти параметры должны быть динамическими, так как я хочу создать общий метод getAll, который может принимать любую карту параметров при вызове GET.
Итак, вопрос, который я думаю, заключается в следующем: как мне реализовать динамические параметры запроса?