我正在尝试使用Java
测试以下cURL
REST处理程序方法:
@GET
@Path("/application/façade/Id/{Id}/userName/{userName}/associatePerson")
public Response getInformationRelatingToUser(@PathParam("Id") String id, @PathParam("userName") String userName){
//do stuff
}
我很擅长使用cURL
。
下面是我用来测试的cURL
命令,我知道port
绝对是正确的。这个curl命令语法是否正确?
curl -X PUT -i -H "Accept: application/json" "localhost:9981/application/façade/Id/userName/associatePerson" -d "Id=testId" -d "userName=testUsername"
当我运行命令并查看Intelij
时,我收到以下错误:
javax.ws.rs.NotFoundException: HTTP 404 Not Found
ERROR o.g.j.server.ServerRuntime$Responder - Error occurred when processing a response created from an already mapped exception.
在Cywgin
运行cURL
时,我得到以下回复:
HTTP/1.1 500 java.lang.NullPointerException
Content-Length: 0
Connection: keep-alive
注意:我使用的REST实现是JAX-RS
答案 0 :(得分:0)
@Path("/application/façade/Id/{Id}/userName/{userName}/associatePerson")
目前,您错过了查询网址中的{Id}
和{userName}
部分:
localhost:9981/application/façade/Id/{MISSING}/userName/{MISSING}/associatePerson
您应该将注释切换为:
@Path("/application/façade/{Id}/{userName}/associatePerson")
实际上替换查询URL中的值。如果您使用-d
添加它们,则会将其作为数据添加到请求中,而不会在网址中替换。
并执行GET
请求,而不是PUT
,因为您已经定义了代码。
curl -X GET -i -H "Accept: application/json" "localhost:9981/application/façade/testId/testUsername/associatePerson"