如何在REST服务中获取不同mime类型的Map参数?

时间:2011-09-10 18:54:08

标签: java rest parameters map jersey

如何将地图指定为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 个答案:

答案 0 :(得分:1)

JAX-RS规范(第4.2.4节)确实要求实现者(如jersey)为MessageBodyReader提供MultivaluedMap<String, String>实现,用于使用application/x-www-form-urlencoded mime类型。例如,您可以执行以下操作:

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

这不足以满足您的目标吗?