我有以下JSON
,我已使用JsonLint进行了验证:
{
"names": [
{
"id":"123",
"name":"stubName",
"type":"stubType",
}
]
}
我想在我的CURL
命令(使用Cygwin
)中将其添加为消息正文,以便测试我编写的REST处理程序。
我目前正在使用此命令,我是通过阅读this answer创建的:
curl -H "Content-Type: application/json" -X PUT -d '{
"names": [
{
"id":"123",
"name":"StubName",
"type":"StubType",
}
]
}' localhost:9980/Id/123/version/123/addPerson
我的处理程序如下:
@PUT
@Consumes("application/json")
@Path("/Id/{Id}/version/{version}/addPerson")
public Response addPerson(@PathParam("Id") String Id,
@PathParam("version") String version,
@Context List<Name> names) {
LOGGER.info("NAMES PASSED : {}", names.toString());
}
当我尝试使用CURL命中我的方法时,我得到一个HTTP 400
方法。
编辑:当我尝试执行names.toString()时,我得到一个空指针,这意味着名称列表必须为空。
答案 0 :(得分:1)
您不应该使用@Context
实体主体(参数)应该是无注释的。
public Response addPerson(@PathParam("Id") String Id,
@PathParam("version") String version,
List<Name> names) {
使用List<Name>
,您应该发送一个JSON数组。摆脱{"names":
,然后发送[]
curl -H "Content-Type: application/json" -X PUT -d '[
{
"id":"123",
"name":"StubName",
"type":"StubType",
}
]' localhost:9980/Id/123/version/123/addPerson