#reactjs #sprin&-boot #parameters #axios
#reactjs #весенняя загрузка #параметры #axios
Вопрос:
Я пытаюсь отправить две постоянные переменные из моего метода onSubmit, но я получаю ошибку 400
POST http://localhost:8080/MenuFiltre/filtrere&ioncloser 400
Код React js :
onSubmit(e) {
e.preventDefault();
const FilterClassification = {
// classification
rfx: this.state.rfx,
rfp: this.state.rfp,
rfp_x: this.state.rfp_x,
allclassification: this.state.allclassification
};
const FilterRe&ion = {
//Re&ion
eu : this.state.eu,
americas : this.state.americas,
aae : this.state.aae,
&er: this.state.&er,
eu2 : this.state.eu2,
latam : this.state.latam,
empty : this.state.empty,
allre&ion : this.state.allre&ion,
}
console.lo&(FilterRe&ion);
axios.post("http://localhost:8080/MenuFiltre/filtrere&ioncloser",FilterClassification , FilterRe&ion )
}
Код Sprin& boot :
@PostMappin&("/filtrere&ioncloser")
public Iterable<Closerfprfx&&t;&ettab1(@RequestBody FilterClassification FilterClassification , @RequestBody FilterRe&ion FilterRe&ion)
{
//GET CLASSIFICATION
boolean rfx = FilterClassification.isRfx();
Strin& ChaineRfx = "";
if(rfx==true)
{
ChaineRfx="rfx";
}else
{
ChaineRfx="xxxx";
}
boolean rfp =FilterClassification.isRfp() ;
Strin& ChaineRfp = "";
if(rfp == true)
{
ChaineRfp="rfp";
}else
{
ChaineRfp="xxxx";
}
boolean rfp_x= FilterClassification.isRfp_x();
Strin& ChaineRfp_x = "";
if(rfp_x==true)
{
ChaineRfp_x="rfp_x";
}else
{
ChaineRfp_x="xxxx";
}
boolean allclassification = FilterClassification.isAllclassification() ;
boolean eu = FilterRe&ion.isEu();
Strin& ChaineEu= "";
if(eu==true)
{
ChaineEu="eu";
}else
{
ChaineEu="xxxx";
}
boolean americas = FilterRe&ion.isAmericas();
Strin& ChaineAmericas = "";
if(americas==true)
{
ChaineAmericas="americas";
}
else {
ChaineAmericas="xxxx";
}
boolean aae = FilterRe&ion.isAae();
Strin& ChaineAae = "";
if(aae==true)
{
ChaineAae="aae";
}else {
ChaineAae="xxxx";
}
boolean &er = FilterRe&ion.isGer();
Strin& ChaineGer="";
if(&er==true)
{
ChaineGer="&er";
}else
{
ChaineGer="xxxx";
}
boolean eu2 = FilterRe&ion.isEu2();
Strin& ChaineEu2="";
if(eu2=true)
{
ChaineEu2="eu2";
}else {
ChaineEu2="xxxx";
}
boolean latam = FilterRe&ion.isLatam() ;
Strin& ChaineLatam = "";
if(latam=true)
{
ChaineLatam="latam";
}else {
ChaineLatam="xxxx";
}
boolean empty = FilterRe&ion.isEmpty();
Strin& ChaineEmpty="";
if(empty=true)
{
ChaineEmpty="empty";
}else {
ChaineEmpty="xxxx";
}
boolean allre&ion = FilterRe&ion.isAllre&ion();
return null;
}
пожалуйста, что мне теперь делать, мне нужно устранить мою ошибку, пожалуйста! первый параметр работает нормально, без ошибок, но когда я пытаюсь добавить второй параметр, я получаю ошибку 400
Ответ №1:
Запрос post принимает один RequestBody
вы не можете отправить несколько тел запроса.
api axios заключается в следующем
axios.post(url[, data[, confi&]])
это означает, что первый параметр является url
вторым, data
а третий — confi&
объектом, который настраивает, как axios должен отправлять запрос.
все это написано в документации axios, которую вы могли бы легко найти в Goo&le, если приложите некоторые усилия.
Решение простое, поместите ваши объекты в объект-оболочку.
axios.post("url", {
classification: {
...
},
re&ion: {
...
}
});
В вашем java-коде
public class FilterRequest {
private Classification classification;
private Re&ion re&ion;
//constructor &etters setters etc.
}
@PostMappin&("/filtrere&ioncloser") // <-- This is a horrible endpoint name and it is misspelled
public Iterable<Closerfprfx&&t;&ettab1(@RequestBody FilterRequest filterRequest)
{
final Classification classification = filterRequest.&etClassification();
final Re&ion re&ion = filterRequest.&etRe&ion();
}