Spring Rest API 的 AJAX POST 方法不起作用
Posted
技术标签:
【中文标题】Spring Rest API 的 AJAX POST 方法不起作用【英文标题】:AJAX POST method to Spring RestAPI not working 【发布时间】:2021-01-19 14:25:18 【问题描述】:我正在尝试使用 jQuery AJAX 将大量数据发送到我的服务器端,并将其发送到 Spring Framework 中的 RESTful 服务。并且表单是未知大小的数组,所以我试图让自动序列化工作。但我什至无法通过一个简单的测试示例来使用它。
似乎无法将我的 JSON 文件与输入类匹配。所以我一定做错了什么。但是根据我一直尝试遵循的教程,我无法看到我做错了什么。
这是我的 AJAX 调用
var test = JSON.stringify(
name : "hallo", lastname : "there"
);
console.log(test);
$.ajax(
type: "POST",
url: "/SpringTest_war_exploded/test",
contentType: "application/json",
data: test,
success: function (returnValue)
console.log("success");
console.log(returnValue);
,
error: function (XMLHttpRequest, textStatus, errorThrown)
console.log (XMLHttpRequest);
alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
);
这是我的服务器端方法。
@PostMapping(value = "/test", consumes = "application/json")
@ResponseBody
public String testajax(@RequestBody TestAutoCreate test)
System.out.println("testajax");
System.out.println(test.getName());
return "hallo";
这是我要与之匹配的类
public class TestAutoCreate
private String name;
private String lastname;
public TestAutoCreate(String name, String lastname)
this.name = name;
this.lastname = lastname;
// the getters and setters
...
这是我得到的错误消息
The origin server is refusing to service the request because the payload is in a format not supported by this method on the target resource.
如果我从服务器端方法中删除 @RequestBody TestAutoCreate
测试,则调用工作正常。只是
【问题讨论】:
尝试发送test
变量而不对其进行字符串化(直接发送JSON对象)
【参考方案1】:
这里的问题
@PostMapping(value = "/test", consumes = "application/json")
@ResponseBody
public String testajax(@RequestBody TestAutoCreate test)
System.out.println("testajax");
System.out.println(test.getName());
return "hallo";
它是 RESTful 控制器,但返回视图。您必须返回 RESTful 响应,内容类型为 Content-Type: application/json
。
查看权限示例:https://spring.io/guides/tutorials/rest/
【讨论】:
我承认,我不太确定你说我应该改变什么?正如我在帖子中提到的,如果从“testajax”中删除输入参数,它会返回字符串“hallo”,没问题。只有当我尝试将其自动反序列化到“TestAutoCreate”类中时,我才收到错误消息,指出它找不到与我的请求匹配的内容。您发送的链接是我引用的教程之一,我试图遵循。但我对 Spring 很陌生,而且我承认,与教程相比,我不太确定自己做错了什么以上是关于Spring Rest API 的 AJAX POST 方法不起作用的主要内容,如果未能解决你的问题,请参考以下文章