Post Mapping注释在springboot上不起作用



伙计们,我很抱歉问了这么愚蠢的问题。但我是一个学生,代码不能正常工作

当我发出post请求时,它不工作,只有get请求工作

   @PostMapping("/print")
       public ResponseEntity<?> print()
   {
       return ResponseEntity.ok("Успешно изтрихте записа!");
   }

     @PostMapping("/save")
     public ResponseEntity<?> saveOrUpdate(@RequestBody userRequest form){
          City city = cityRepository.findById(form.getCityId()).orElse(cityRepository.findById(17L).get());
         boolean isNew = form.getId() == null;
         Users users = new Users (
                 form.getId(),
                 form.getName(),
                 form.getNum(),
//              cityId == null? cityRepository.save(new City(cityName)): cityRepository.findById(cityId).orElse(null) );
                 city );
         users = userRepository.save(users);
         Map<String, Object> response = new HashMap<>();
         response.put("generatedId", users.getId());
         if(isNew) {
             response.put("message", "Успешно записан!");
         }
         else{
             response.put("message", "Успешно редактиран!");
         }
         return new ResponseEntity<>(response, HttpStatus.OK);
     }
  
    

我不完全确定原因是什么,但这可能是CSRF相关的问题。要确保这一点,请尝试在spring安全配置中禁用CSRF。但是,从长远来看,您需要提供CSRF令牌。

@EnableWebSecurity
public class ApiSecurityConfig extends WebSecurityConfigurerAdapter {
  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable();
  }
}

你不清楚这个问题,所以很难调试,但我认为问题可能在视图页面,所以尝试添加这个方法="post"从你的表单标签中输入如下

<form action="/print" method="post">

如果你不想这样做,把这个@PostMapping改成@RequestMapping。

最新更新