通过POST从React App发送数组到Spring Boot

我已经看到类似的问题,但没有成功。我需要将数字矩阵从Web应用程序(ReactJS)发送到Spring Boot" title="Spring Boot">Spring Boot控制器。

我尝试了很多组合,但总是会出错,我的有效载荷是:

{"rows":[[7,0,0,6,4,0,0,0,0],[9,4,0,0,0,0,8,0,0],[0,8,6,2,5,0,0,9,0],[0,0,0,0,6,8,7,3,0],[4,0,8,0,2,1,0,0,0],[0,0,3,0,0,0,1,6,4],[0,0,0,0,0,9,6,7,5],[3,9,0,0,8,5,0,1,2],[0,0,5,0,0,4,0,0,0]]}

我的反应代码是:

axios.post('http://localhost:8090/api/check', {

rows: this.props.rows

})

.then(function (response) {

console.log(response);

})

.catch(function (error) {

console.log(error);

});

我的Spring Boot控制器是:

@PostMapping(path = "/check")

@CrossOrigin(origins = "http://localhost:3000")

public boolean check(@RequestParam(value = "rows") final int[] array, final int row, final int col, final int num) {

return true;

}

我已经尝试声明@RequestParam(value = "rows[]")@RequestParam(value =

"rows")。而不是@RequestParam(value = "rows") final Object rows

但是它总是以 响应。

如何通过POST请求传递矩阵?

谢谢

回答:

最后,我解决了将所有参数包装在一个对象中的问题。

@JsonAutoDetect

public class Params {

private int[][] matrix;

private int row;

private int col;

private int num;

[...getters and setters]

然后在控制器的方法符号中仅声明一个参数:

    @PostMapping(path = "/check")

@CrossOrigin(origins = "http://localhost:3000")

public boolean check(@RequestBody final Params params) {

return sudokuGenerator.checkValue(params.getMatrix(), params.getRow(), params.getCol(), params.getNum());

}

至关重要的是,客户端应该传递带有其属性的对象,而没有任何类型的包装,因此采用这种方式:

axios.post('http://localhost:8090/api/check', {

matrix: this.props.rows,

"row": row - 1,

"col": col - 1,

"num": input.textContent

})

而不是以这种方式(带有根属性“ params”):

axios.post('http://localhost:8090/api/check', {

"params" : {

matrix: this.props.rows,

"row": row - 1,

"col": col - 1,

"num": input.textContent

}

})

以上是 通过POST从React App发送数组到Spring Boot 的全部内容, 来源链接: utcz.com/qa/421629.html

回到顶部