【发布时间】:2020-04-01 12:18:48
【问题描述】:
我正在尝试在 React 中向Spring 中的后端服务器发出发布请求,但不断收到以下错误:
[错误] - org.springframework.http.converter.HttpMessageNotReadableException: 缺少必需的请求正文。
它在邮递员上运行良好。
反应部分的代码:
let testeDTO = JSON.stringify({
email: "teste@@teste.com",
senha: "1234",
grupo: 1
});
axios
.post("http://192.168.0.49:8080/site/login/", testeDTO, {
headers: {
"Content-Type": "application/json"
}
})
.then(response => {
console.log(response);
})
.catch(erro => {
console.log(erro.response);
});
rest 控制器上的注解:
@RestController
@RequestMapping("/site/login")
来自 Spring 的代码:
@PostMapping
public testeDTO login(@RequestBody TesteDTO testeDTO) {
}
CORS 类:
@WebFilter(urlPatterns = {"/*"})
public class CORSFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS");
response.setHeader("Access-Control-Allow-Headers", "*, Content-Type, authorization, grupo, usuario");
filterChain.doFilter(request, response);
}
}
DTO 代码:
public class TesteDTO {
private String email;
private String senha;
private Long grupo;
//getters and setters
}
【问题讨论】:
-
试试
@PostMapping(consumes = MediaType.APPLICATION_JSON) -
感谢您的回复,但在我将方法上的注释更改为:@PostMapping(consumes = "application/json") 后错误仍然存在。编辑问题以添加我的 CORS 类。
-
请分享
TesteDTO的代码。您是否能够看到 Spring 收到的请求(例如通过在过滤器中设置断点)? -
另外,据我所知,应该可以将有效负载作为 JavaScript-/TypeScript-Object 传递给
axios.post(url[, data[, config]]),因此手动编组似乎没有必要。y -
Teste dto 只有email、senha 和grupo 的属性。不,它没有到达后端的任何断点,错误发生在方法之前。
标签: java reactjs spring post axios