Я разрабатываю интерфейс моего веб-приложения, используя ReactJs. Здесь я делаю POST API, передавая массив объектов.
Объекты создаются в обработчике событий следующим образом:
eventHandler(id1, id2, e) {
let payload = this.state.payload;
let changedItem= {
changeTo: e,
id1: id1,
id2: id2
};
let res = [];
payload.forEach(item=> {
if (item.id1 !== id1
|| item.id2 !== id2) {
res.push(control);
}
});
res.push(changedItem);
this.setState({
payload: res
});
}
Я проверил это, напечатав массив после этого. Затем я выполняю вызов POST, передавая массив:
onClick() {
let changedControls = (this.state.payload);
updateControls(changedControls).then(() => {
this.setState({
payload: []
});
}).catch((error) => {
console.log(error);
})
}
Вызов API определяется в отдельном файле как:
export const updateControls = (changedControls) => {
let uri = '/api/update-controls';
return new Promise((resolve, reject) => {
axios.post(uri, changedControls).then(response => {
if (response != null) {
resolve(response.data)
}
}).catch(err => {
console.log(err.response.data);
})
})
};
В идеале следующим шагом должен был бы быть вызванный мой Java контроллер, определяемый как:
@RequestMapping(value = "/update-controls", method = RequestMethod.POST)
public void updateControls(@RequestParam(value = "updatedControls") List<ControlsUpdate> updatedControls) throws Exception {
initServiceClientRest();
String user = getUserId();
ResponseEntity responseEntity = serviceClientRest.update(updatedControls, user);
if (responseEntity != null) {
if (responseEntity.getStatusCode() != HttpStatus.OK) {
throwErrorMessages(responseEntity);
}
}
}
Я считаю, что именно в этом и заключается ошибка. Я получаю сообщение об ошибке 400: «Обязательный параметр списка« updatedControls »отсутствует».
Есть предложения?
РЕДАКТИРОВАТЬ: Извините за опечатку в вызове API POST! Но это не проблема, просто опечатка, которую я сделал при копировании в коде
EDIT2:
Ошибка:
feign.FeignException$InternalServerError: status 500 reading serviceClientRest#updateAccessControls(List,String)
at feign.FeignException.errorStatus(FeignException.java:114) ~[feign-core-10.2.3.jar:na]
at feign.FeignException.errorStatus(FeignException.java:86) ~[feign-core-10.2.3.jar:na]
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:93) ~[feign-core-10.2.3.jar:na]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:149) ~[feign-core-10.2.3.jar:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:78) ~[feign-core-10.2.3.jar:na]
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103) ~[feign-core-10.2.3.jar:na]
at com.sun.proxy.$Proxy155.updateAccessControls(Unknown Source) ~[na:na]
at ScoringConfigController.updateControls(ScoringConfigController.java:135) ~[main/:na]