将数据发布到dropwizard资源?

时间:2015-02-26 16:09:57

标签: java rest dropwizard

我正在尝试确定如何将数据发布到我的dropwizard资源。

比如说我有以下资源:

@GET
@Timed
@Path("/update/{id}")
public int updateRecord(    @PathParam("id") int id) throws JsonParseException, JsonMappingException, IOException

// Logic here I guess?!

// Returning 0 to kill the error regarding not returning antyhing in my IDE.
return 0;
}

现在我希望能够做一个jquery帖子,例如:

$ .post(“http://localhost:8080/update/1/”,jsonUpdateString);

记录“jsonUpdateString”是一个字符串化的JSON数组 - 我已经知道如何将它映射到java数据结构,因为我之前已经硬编码了 - 我只需要知道我需要添加到我的资源中实际上在我的java端使用“jsonUpdateString”。

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

static class Entity {
  @JsonProperty String name;
}

@POST
@Timed
@Path("update/{id}")
@Consumes(MediaType.APPLICATION_JSON)
public int updateRecord(@PathParam("id") int id, List<Entity> entities) {
  // Do something with entities...
  return 0;
}

您可以测试:

curl -H "Content-Type: application/json" --data '[{"name":"foo"}]' http://localhost:8080/update/1

一些事情:

  • 如果您的方法有一个未注释的参数(在这种情况下为entities),Jersey将尝试将请求实体映射到此对象。

  • 让Jersey / Jackson为您进行JSON转换(请参阅Entity)。

  • 确保您的JQuery客户端正在设置请求标头Content-Type: application/json