React js отправка json на запрос загрузки Spring завершилась неудачно с кодом состояния 400 - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь отправить состояние, созданное в передней части js, на загрузочную часть backend spring и прочитать свое состояние в режиме JSON, я использовал Ax ios, но получаю эту ошибку: *

Запрос не выполнен с кодом состояния 400

мой код внешнего интерфейса:

onSubmit(e){
    e.preventDefault();
    const FilterRegion={
      //region
     eu:this.state.eu,
      americas:this.state.americas,
      aae:this.state.aae,
      ger:this.state.ger,
      eu2:this.state.eu2,
      latam : this.state.latam,
      empty:this.state.empty,
      allregion:this.state.allregion,
       }
    console.log(FilterRegion)
    axios.get("http://localhost:8080/MenuFiltre/filtreregioncloser",FilterRegion)
  }

Контроллер в серверной части:

@Controller
@RequestMapping("/MenuFiltre")
@RestController
@CrossOrigin()
public class MenuFiltre {
    @GetMapping("/filtreregioncloser")
    public Iterable<Closerfprfx>gettab1(@RequestBody String jsonStr)
    {
        JSONObject jObject = new JSONObject(jsonStr);
         System.out.println(jsonStr);

        return null;

        
        
    }

}

Ответы [ 2 ]

2 голосов
/ 04 августа 2020

Во-первых, вы можете удалить аннотацию @Controller из вашего контроллера, поскольку у вас уже есть аннотация @RestController, чтобы сделать его контроллером отдыха. Во-вторых, если вы хотите, чтобы тело запроса или json отправлялось в конечную точку, используйте запрос POST. Если вы спросите меня, почему бы не использовать тело запроса с запросом GET, краткая версия - это из-за HTTP spe c, прочтите: HTTP GET с телом запроса

http код состояния 400 в основном из-за неверного запроса. Проблема связана с конечной точкой вашего контроллера. Вы отправляете данные как json из своего пользовательского интерфейса. Вместо чтения данных в виде строки из тела запроса используйте класс pojo, например FilterRegion:

@PostMapping("/filtreregioncloser")
public Iterable<Closerfprfx>gettab1(@RequestBody FilterRegion filterRegion)
{
     //No need for Jsonobject while using POJO springboot will convert it for you from json to POJO
     System.out.println(filterRegion);
     return null;      
}

Создайте класс POJO FilterRegion с полями в json, например:

class FilterRegion {
 String eu;
 String americas;
 //Add other fields and the constructor,getters and setters
}
0 голосов
/ 04 августа 2020

измените свой код, как показано ниже:

axios.get("http://localhost:8080/MenuFiltre/filtreregioncloser",JSON.stringify(FilterRegion))
...