gpt4 book ai didi

get - JAX-RS 2 和 Jersey 2 : how to pass an (hash)map on a GET request

转载 作者:行者123 更新时间:2023-12-04 02:52:48 24 4
gpt4 key购买 nike

我只是想使用 JAX-RS 2 将映射传递到我的 Web 服务上的 @GET 方法。我想知道这是否可能以及如何实现,即使 GET 的方法没有任何主体。

像这样:

@GET
@Path(??)
@Produces({"application/xml", "application/json"})
public User find(@PathParam(??) HashMap<String, String> map) {
// work on map !
}

我已经看到它存在 MultiValued 映射,但它用于参数。请问如何传递 map ?

提前致谢!

最佳答案

您需要在您的类路径中包含 Jackson jars(或任何其他 XML/JSON 到 Map 映射器)出于美观、惯例和安全原因,您可能不想在 @PathParam 上传递 map 。您通常传递一个 JSON/XML 对象作为请求主体,例如使用 POST/PUT

@POST
@Path("/anypath")
@Consumes({"text/xml", "application/json"})
public User find(HashMap<String, String> map) {
//magic should happen
}

然后只需传递内容类型为 application/json 或 text/xml 的 POST/PUT 请求例如

{
"key1": "value1"
"key2": "value2"
}

如果类路径中有正确的 Jackson/Moxy 等映射器,它会为您将 JSON/XML 格式转换为 java.util.Map(甚至是 POJO)

@Produces 仅在您还打算返回 XML/JSON 时才需要,但由于您期望 XML 或 JSON,因此使用 @Consumes 是有意义的在这里。

但是,如果您必须在 GET 请求中传递 JSON 对象,例如作为请求参数,看看这个问题:Convert JSON query parameters to objects with JAX-RS

附注对于 xml,mime 是 text/xml 而不是 application/xml

关于get - JAX-RS 2 和 Jersey 2 : how to pass an (hash)map on a GET request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17293527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com