首页 > 解决方案 > Spring / Angular 7 POST方法请求参数为空

问题描述

我想使用 POST 从前端向后端发送数据(以 json 形式),但请求参数为空。

角度:

this.http.post('api/example', { mydata: JSON.stringify(data) },
 { "headers": { header: "text/html;charset=UTF-8" } }).subscribe(Response => console.log(Response);
}); 

JSON.stringify(data) 看起来像这样:

[
  ["num1","num2","num3","num4","num5", "num6"],
  ["test6","test2","test1","test5","test4", "test3"]
]

这只是一个例子,数据将是动态的,所以有时我会有更多或更少的列和行。

弹簧后端:

@RequestMapping(value = "/api/example", method = RequestMethod.POST)
public @ResponseBody void postExample(HttpServletRequest request, HttpServletResponse response)
        throws IOException {

    HttpSession session = request.getSession();

    response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");
    request.setCharacterEncoding("UTF-8");

    String mydata = request.getParameter("mydata");
    System.out.println(mydata);
    ...
}

mydata 为空,当我打印出来时。我不知道为什么。我尝试了什么:

我想使用“getParameter”而不是使用@RequestBody 注释。

如何从前端获取 json 数据并在后端使用它?

编辑:最初我不想使用@RequestBody,但是如果我想使用它,我该如何使用它来获取这些json数组?

标签: javajsonangularspringspring-boot

解决方案


您需要使用 .getReader(),而不是 .getParameter() 方法,因为您需要检索请求的主体而不是某些参数。


推荐阅读