我正在尝试学习Spring Framework,为我未来的项目创建RESTful Web服务。到目前为止,我已经尝试使用GET并使用简单的Ajax请求使用它没有问题。我也尝试使用查询字符串来输入参数。
截至目前,我正在尝试创建一个接收POST请求的端点。我已经研究了好几天但是没有用(对于像我这样的初学者来说,有些因素太复杂了)。
这是我的简单代码:
Java Spring
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public String testString(String jsonString)
{
System.out.println(jsonString);
return jsonString;
}
阿贾克斯
var data = {"name":"John Doe"}
$.ajax({
url: "http://localhost:8080/springrestexample/test",
method:"POST",
data:data,
dataType:'text',
success: function( data ) {
alert(data);
},
error: function( xhr, status, errorThrown ) {
alert("Error:" + errorThrown + status);
}
});
我试过调试tomcat,好像我没有在testString上传递任何值。我需要在我的java代码上添加一些东西吗?
@RequestMapping
只将您的方法映射到某个网址。要访问数据,您需要@RequestParam
注释来获取数据,例如:
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public String testString(@RequestParam("name") String jsonString)
{
System.out.println(jsonString);
return jsonString;
}
有关更多示例,请参阅this手册。
由于您是从ajax请求将数据传递到body中,因此您需要从中检索
@RequestBody
像这样在参数之前添加这个注释;
public String testString(@RequestBody String jsonString) {
System.out.println(jsonString);
return jsonString;
}
你完成了:)