Java 中使用 Jersey 的 Hashmap 示例?
Hashmap Example in Java using Jersey?
我目前是第一次使用 Web 服务,我必须使用 Maven 在 Jersey 中编写一些不同 Web 服务的示例,
但我似乎只能让它在 Spark 中运行(这是我的 spark 示例)
//Hashmap Example
get("add/:num1/:num2", new Route() {
@Override
public Object handle(Request rqst, Response rspns) throws Exception {
rspns.type("application/json");
int num1 = Integer.parseInt(rqst.params(":num1"));
int num2 = Integer.parseInt(rqst.params(":num2"));
HashMap<String, Integer> map = new HashMap<>();
map.put("result", num1+num2);
Gson gson = new Gson();
return gson.toJson(map);
}
});
我只是需要一些帮助来编写一个 Jersey 示例?
如能提供帮助,我们将不胜感激
首先,对于 Jersey,您需要注册一个 JSonProvider,这样您就可以 return 一个对象,它会在 JSON 中为您序列化。您也可以毫不费力地支持 XML。
我个人使用 Jackson。 Jersey 的默认设置是 Moxy,它不支持地图,即使是简单的列表也有 "issues"(你需要将它们包装起来)见 this post
使用 Jackson 配置 Jersey:https://jersey.java.net/documentation/latest/media.html#json.jackson
地图的 Moxy 问题:
这是 Jersey Web 服务的工作示例,return地图,假设您使用的是 Jackson
@GET
@Path("add/{num1}/{num2}")
@Produces(MediaType.APPLICATION_JSON)
public Response getClubNames(@PathParam("num1") Integer num1, @PathParam("num2") Integer num2) {
Map<String, Object> returnMap = new HashMap<String, Object>();
returnMap.put("resultAsString", Integer.toString(num1 + num2));
returnMap.put("resultAsInt", num1 + num2);
return Response.status(Response.Status.OK).entity(returnMap).build();
}
个人注意事项,因为您开始使用 Jersey 了:
我真的很喜欢泽西岛。但是 HK2 存在严重的硬耦合问题。 https://java.net/jira/browse/JERSEY-1933。这超出了范围,但您应该在选择 JAX-RS 2.0 实现之前了解这意味着什么。在独立的 Web 应用程序中,Jersey 就像一个魅力。
自己想出来的
//HashMap Example
@GET
@Path("add/{num1}/{num2}")
public String Hashmap(@PathParam("num1") int num1, @PathParam("num2") int num2){
HashMap<String, Integer> map = new HashMap<>();
map.put("result", num1+num2);
Gson gson = new Gson();
return gson.toJson(map);
}
我目前是第一次使用 Web 服务,我必须使用 Maven 在 Jersey 中编写一些不同 Web 服务的示例,
但我似乎只能让它在 Spark 中运行(这是我的 spark 示例)
//Hashmap Example
get("add/:num1/:num2", new Route() {
@Override
public Object handle(Request rqst, Response rspns) throws Exception {
rspns.type("application/json");
int num1 = Integer.parseInt(rqst.params(":num1"));
int num2 = Integer.parseInt(rqst.params(":num2"));
HashMap<String, Integer> map = new HashMap<>();
map.put("result", num1+num2);
Gson gson = new Gson();
return gson.toJson(map);
}
});
我只是需要一些帮助来编写一个 Jersey 示例?
如能提供帮助,我们将不胜感激
首先,对于 Jersey,您需要注册一个 JSonProvider,这样您就可以 return 一个对象,它会在 JSON 中为您序列化。您也可以毫不费力地支持 XML。
我个人使用 Jackson。 Jersey 的默认设置是 Moxy,它不支持地图,即使是简单的列表也有 "issues"(你需要将它们包装起来)见 this post
使用 Jackson 配置 Jersey:https://jersey.java.net/documentation/latest/media.html#json.jackson
地图的 Moxy 问题:
这是 Jersey Web 服务的工作示例,return地图,假设您使用的是 Jackson
@GET
@Path("add/{num1}/{num2}")
@Produces(MediaType.APPLICATION_JSON)
public Response getClubNames(@PathParam("num1") Integer num1, @PathParam("num2") Integer num2) {
Map<String, Object> returnMap = new HashMap<String, Object>();
returnMap.put("resultAsString", Integer.toString(num1 + num2));
returnMap.put("resultAsInt", num1 + num2);
return Response.status(Response.Status.OK).entity(returnMap).build();
}
个人注意事项,因为您开始使用 Jersey 了:
我真的很喜欢泽西岛。但是 HK2 存在严重的硬耦合问题。 https://java.net/jira/browse/JERSEY-1933。这超出了范围,但您应该在选择 JAX-RS 2.0 实现之前了解这意味着什么。在独立的 Web 应用程序中,Jersey 就像一个魅力。
自己想出来的
//HashMap Example
@GET
@Path("add/{num1}/{num2}")
public String Hashmap(@PathParam("num1") int num1, @PathParam("num2") int num2){
HashMap<String, Integer> map = new HashMap<>();
map.put("result", num1+num2);
Gson gson = new Gson();
return gson.toJson(map);
}