#java #jersey #jax-rs
#java #джерси #jax-rs
Вопрос:
У меня есть метод HTTP GET в моей службе JAX-RS (Джерси), но я бы хотел, чтобы он принимал динамическое количество параметров запроса. Тем не менее, я хочу использовать Jenkins API для переноса этих параметров в @BeanParam
объект, но лениво, вот так:
@GET
public <T extends MyMessage> Response get(@PathParam("entity") String entity, @Context Request request) {
/* Get the class that would normally be a parameter of this method, like this:
* [...] get(@PathParam("entity") String entity, @BeanParam MyMessage m)
*/
Class<T> clazz = getMessageClass(entity);
/* That's the magic part I would like to know how to do: */
T message = createMessageFromRequest(request, clazz);
/* ... then I would deal with my message however I wanted. */
}
Я знаю, что мог бы ввести UriInfo
и прочитать карту параметров запроса «вручную», но я хочу использовать API Джерси, чтобы все было организовано, и не нужно вручную преобразовывать строки в правильные типы параметров.
Как пример, мой getMessageClass(entity)
будет выглядеть примерно так:
switch(entity) {
case 'foo':
return FooSpecificGet.class;
default:
return CommonGet.class;
}
и классы:
class CommonGet {
@QueryParam("page")
private int pageNumber;
@QueryParam("pageSize")
private int pageSize;
...
}
class FooSpecificGet extends CommonGet {
@QueryParam("fooFilter")
private String fooFilter;
...
}
Комментарии:
1. Дженкинс ?! Вы имеете в виду Джерси, не так ли?
2. Да, извините, исправлено
3. Для меня это похоже на проблему XY . Я думаю
@DefaultValue
, что это может быть наилучшим вариантом.