RESTful web service in Java - 400 Bad request - Wrong method invocation?
我不明白为什么这个curl调用给了我一个400错误的请求。
1 | curl -v -XGET -H"Content-Type:application/json" -d '{"match":{"first":"james"}}' http://localhost:8080/geocon/search/ |
认为这是应该处理所有事情的代码部分
1 2 3 4 5 6 7 8 9 10 11 12 | @Path(Paths.SEARCH) public class SearchService { @GET @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public String search(@DefaultValue(NO_TYPE) @QueryParam("type") String type, String query) { // do interesting stuff with the query System.out.println(type); System.out.println(query); return //the result of the query } |
显然,我没有在控制台中看到两条打印线,而且Web服务的答案是400 Bad request
如果我在curl和代码中更改动词(POST而不是GET),结果就可以了,一切正常。
为什么?
我不能使用GET传递数据吗? 如果你考虑一下,我不会修改内容,我只是接收数据,所以GET应该是最好的REST翻译。
您可以发送带有
现在我不确定你使用的MVC框架是否更严格,因为它会自动拒绝与正文发送的任何
因此,你所做的不是RESTful。通过
UPDATE
这是对您的评论的回应。
您可以公开名为
那怎么玩呢?搜索查询进来,您解析正文并运行查询。然后你应该坚持结果(不是永远;给它一些理智的TTL值)。完成后,返回带有
另请阅读此内容以获取更多指示。
您使用的语法似乎有一个拼写错误。请尝试使用下面的json和xml格式。 -XGET错了。它应该是-X GET。
对于xml
对于JSON
1 | curl -i -H"Accept: application/json" -H"Content-Type: application/json" -X GET http://hostname/resource |