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

发布于 2024-12-03 23:04:07 字数 628 浏览 0 评论 0原文

如何将地图指定为 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
    }
}

我正在使用 Jersey。我应该为此实现一个 MessageBodyReader 吗?但是为像 Map 这样的泛型类型实现一个阅读器对我来说似乎是一个糟糕的方法。也许我应该在 Map 对象之上编写一个包装类。

你的想法是什么?谢谢。

How can I specify a map as one of the parameters of a REST service e.g

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

or

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

I am using Jersey. Should I implement a MessageBodyReader for that? But implementing a reader for a generic type like Map seems a bad way for me. Maybe I should write a wrapper class on top of the Map object.

What is your ideas? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

指尖微凉心微凉 2024-12-10 23:04:07

JAX-RS 规范(第 4.2.4 节)确实要求实现者(如 jersey)为 MultivaluedMap 提供 MessageBodyReader 实现,用于使用 < code>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();
} 

这对于您想要做的事情来说还不够吗?

The JAX-RS specification (section 4.2.4) does require that implementors (like jersey) provide a MessageBodyReader implementation for MultivaluedMap<String, String> which is used to consume application/x-www-form-urlencoded mime types. So for example, you can do something like this:

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

Is this not sufficient for what you're trying to do?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文