我正在尝试确定如何将数据发布到我的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”。
答案 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
。