[英]HTTP POST request from react client app to spring-boot server returns 400 error
我在我的反应应用程序中配置了一个POST请求,如下所示:
await fetch('http://localhost:8080/api/room', { credentials: 'include' }, {
'method': 'POST',
'headers': {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Access-Control-Allow-Credentials': true
},
'body': JSON.stringify(somedata),
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log('Error', error);
});
在我的spring-boot应用程序中,我有一个控制器:
@RequestMapping(value = "/room", produces = "application/json", method = {RequestMethod.GET, RequestMethod.POST})
public ResponseEntity<Room> createRoom(@Valid @RequestBody Room room) throws URISyntaxException {
Room result = roomService.saveOrUpdate(room);
return ResponseEntity.created(new URI("/api/room/" + result.getRoomClientId()))
.body(result);
}
在我的浏览器控制台中,我收到了以
Response {type: "cors", url: "http://localhost:8080/api/room",
redirected: false, status: 400, ok: false, …}
在我的spring-boot应用程序控制台中,我收到此错误:
2019-04-08 16:31:42.742 WARN 86177 --- [io-8080-exec-10] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public org.springframework.http.ResponseEntity<com.sbpoc.app.db.entity.Room> com.sbpoc.app.db.controller.RoomController.createRoom(com.sbpoc.app.db.entity.Room) throws java.net.URISyntaxException]
错误说,请求正文丢失了?
更新
import uniqid from 'uniqid';
const someData = {
roomNumber: uniqid(),
}
房间实体:
@Entity
public class Room implements Serializable {
private static final long serialVersionUID = 3433823138738252949L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String roomNumber;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getRoomNumber() {
return roomNumber;
}
public void setRoomNumber(String roomNumber) {
this.roomNumber = roomNumber;
}
}
我需要将凭证选项包含在一个对象中:
fetch('http://localhost:8080/api/room',
{
method: 'POST',
credentials: 'include',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Access-Control-Allow-Credentials': true
},
body: JSON.stringify(data)
}
)
.then(res => console.log(res));
我也在springboot app中使用了@PostMapping:
@PostMapping("/room")
public ResponseEntity<Room> createRoom(@Valid @RequestBody Room room) throws URISyntaxException {
log.info("Request to create room: {}", room);
Room result = roomService.saveOrUpdate(room);
return ResponseEntity.created(new URI("/api/room/" + result. getRoomClientId()))
.body(result);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.