代码之家  ›  专栏  ›  技术社区  ›  molLbach

向Spring后端发送axios post请求时出现400错误

  •  -1
  • molLbach  · 技术社区  · 9 月前

    我有这些数据,我想发送到后端端点以执行一些数据库操作,现在的问题是,当我检查网络时,我可以看到请求确实启动了,并且确实包含了作为请求主体的数据,但不知何故,它告诉我,当它确实在请求主体中时,端点没有收到参数。

    这是发送数据的函数,它从按钮内的value属性获取数据。

    function sendThefknData(mangaId) {
            axios.post('/saveManga', {
                mangaId: mangaId
            })
                .then(response => {
                    console.log('Manga saved successfully:', response.data);
                })
                .catch(error => {
                    console.error('There was an error saving the manga:', error);
                });
        }
    
    

    这是控制器端点

    @PostMapping("/saveManga")
        public ResponseEntity<String> saveManga(@RequestParam("mangaId") String mangaId, HttpSession session) {
            try {
                Long userId = (Long) session.getAttribute("userId");
                if (userId == null) {
                    return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("User not logged in.");
                }
    
                System.out.println("Manga ID: " + mangaId);
                System.out.println("User ID from session: " + userId);
    
                usermangainfo.insertUserMangas(userId, mangaId);
    
                return ResponseEntity.ok("Manga saved successfully.");
            } catch (Exception e) {
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Error saving manga: " + e.getMessage());
            }
        }
    

    老实说,我不知道会有什么问题,我试着用谷歌搜索,试着用chatgpt碰碰运气,但无济于事。 Network

    2 回复  |  直到 9 月前
        1
  •  0
  •   Shikha Martyn    9 月前

    嘿,你发送请求参数的方式不对。使用以下内容

    axios.post( /saveManga?mangaId=${mangaId} )

    这应该行得通。

        2
  •  0
  •   SpaceTrucker    9 月前

    文件 RequestParam 声明:

    在Spring MVC中,“请求参数”映射到查询参数、表单数据和多部分请求中的部分。

    但如果我没记错的话,你可能正在发送一个json正文。这就是为什么后端找不到该参数的原因。它需要一个名为的表单参数 mangaId 在目前的实施中。

    您可以使用axios发送表单数据,也可以更改spring实现以使用 RequestBody .