Spring post 不工作 - 我的 json 是从前端发送的,我可以在日志中看到它,但我的后端得到 Null
Posted
技术标签:
【中文标题】Spring post 不工作 - 我的 json 是从前端发送的,我可以在日志中看到它,但我的后端得到 Null【英文标题】:Spring post not working -- my json is sent from frontend i can see it in logs but my backend gets Null 【发布时间】:2020-04-06 00:32:17 【问题描述】:所以基本上我检查了其他问题,大多数答案是在后端的 Post 方法中使用 @RequestBody
,但它仍然抛出 500 错误,我收到的所有 json 数据都是 null
任何其他建议可能是什么问题?
这是我的休息:
@PostMapping( "/createScreen" )
public ResponseEntity<String> createScreen(@RequestBody AdminWrapper adminWrapper)
System.out.println(adminWrapper);
adminDao.saveAll(adminWrapper.getAdminList());
return new ResponseEntity<String>(HttpStatus.OK);
这是我要发回的 json:
"module": "testModule",
"networkId": 1,
"adminInfos":
[
"id": 1,
"key": "Test",
"value": "TestValue",
"defValue": "TestDef",
"type": "checkbox",
"isActive": true
]
但在日志中我看到了这个:
adminWrapper [module=null, networkId = null, adminInfos = null ]
来自前端的请求:
function submit()
let adminWrapper =
module: 'testModule',
networkId: 1,
adminInfos: []
$('#content > .form-group').each(function ()
let value = $(this).find('input').val();
if ($(this).find('input').attr('type') === 'checkbox')
value = $(this).find('input').prop('checked')
let adminInfo =
id: $(this).find('input').attr('data-id'),
key: $(this).find('input').attr('data-key'),
value: value
adminWrapper.adminInfos.push(adminInfo);
)
$.ajax(
type: "POST",
url: 'http://localhost:8080/.../createScreen',
contentType: "application/json",
data: JSON.stringify(
adminWrapper
)
)
【问题讨论】:
是的,我的内容类型正确,还有构造函数和 getter 设置器,检查我是否输入了错误但一切看起来都不错 我编辑了我的问题并添加了请求JSON.stringify(adminWrapper)
正在将您的对象包裹在一个额外的层中,我认为,请尝试删除那些大括号。您也可以通过检查 chrome 中的网络选项卡来确认这一点。另一个可用于完整性检查的工具是 Postman,您可以在其中填写您希望发送的原始 JSON
删除了仍然相同的括号,在邮递员中我得到状态 200,所以我的请求有效,但值在某种程度上为空..
在请求正文的浏览器中,我看到了我想要的,所以一切都可以从前端发送,但在后端,所有发送的值都是空的,就像我将空 json 发送到后端一样,如果我发送 with邮递员它工作我看到我的数据库中的值
【参考方案1】:
所以问题出在我的
let adminInfo =
id: $(this).find('input').attr('data-id'),
key: $(this).find('input').attr('data-key'),
value: value
我忘了添加这些:
"defValue": "TestDef",
"type": "checkbox",
"isActive": true
【讨论】:
【参考方案2】:我认为您的 AdminWrapper.java 与来自前端的请求 josn 的结构不匹配,请尝试匹配请求 json 中的每个字段。
你可以参考下面的例子https://www.baeldung.com/spring-request-response-body
【讨论】:
以上是关于Spring post 不工作 - 我的 json 是从前端发送的,我可以在日志中看到它,但我的后端得到 Null的主要内容,如果未能解决你的问题,请参考以下文章
不支持 Spring Rest POST Json RequestBody 内容类型
在 Spring Boot 中通过 RestTemplate POST JSON 对象