Как получить параметр Map в REST-сервисе для разных типов пантомимы? - PullRequest
1 голос
/ 10 сентября 2011

Как мне указать карту в качестве одного из параметров службы REST, например,

@Path("/servicepath")
@Consumes(MediaType.APPLICATION_XML)
public class MyResource {
    @POST
    public Response getMap(Map<String, List<Object>>) {
    //code here
    }
}

или

@Path("/servicepath")
@Consumes(MediaType.APPLICATION_JSON)
public class MyResource {
    @POST
    public Response getMap(Map<String, List<Object>>) {
    //code here
    }
}

Я использую Джерси.Должен ли я реализовать MessageBodyReader для этого?Но реализация ридера для универсального типа, такого как Map, кажется мне плохим способом.Может быть, мне следует написать класс-оболочку поверх объекта Map.

Какие у вас идеи?Спасибо.

1 Ответ

1 голос
/ 11 сентября 2011

Спецификация JAX-RS (раздел 4.2.4) требует, чтобы разработчики (например, джерси) предоставили реализацию MessageBodyReader для MultivaluedMap<String, String>, которая используется для использования application/x-www-form-urlencoded типов пантомимы.Например, вы можете сделать что-то вроде этого:

@Path("/servicepath")
@POST
@Consumes("application/x-www-form-urlencoded")
@Produces("text/plain")
public String doTheFormThing(MultivaluedMap<String, String> formdata) {
    return formdata.toString();
} 

Разве этого недостаточно для того, что вы пытаетесь сделать?

...