Http.post()将有效负载从对象更改为函数

时间:2018-09-05 20:20:40

标签: http spring-boot post angular6

我正在开发一个以角度6为前端,以弹簧靴为REST后端的proyect。 (英语不是我的母语,所以我提前为语法道歉。)

一切都很好,直到我在某些方法上出现错误为止。

我正在从前端服务发出一个http.post请求,并从spring boot中得到了一个错误,说不允许使用内容类型的应用程序/文本(其他PostMapping方法没有发生这种情况,但是无论如何),我设法做到了使用以下代码更改帖子标题:

persistGame(game: Game) {
    const path = 'http://localhost:8080/games';
    const headers = new Headers();
    headers.set('Content-Type', 'application/json; charset=utf-8');
    const options = new RequestOptions();
    options.headers = headers;
    console.log(game);
    return this.http.post(path, Game, options);
}

然后,console.log显示正确的对象,但是我的后端开始抱怨""timestamp":"2018-09-05T20:11:04.848+0000","status":400,"error":"Bad Request","message":"JSON parse error: Unrecognized token 'function': was expecting 'null', 'true', 'false' or NaN; nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'function': was expecting 'null', 'true', 'false' or NaN\n at [Source: (PushbackInputStream); line: 1, column: 10]","path":"/games"}"

当我检查有效载荷时,我发现了这个问题

"function Game() {
    }"

代替我的对象。...

我的后端方法如下:

@CrossOrigin()
@PostMapping(path = "/games")
public ResponseEntity<Object> createGame(@RequestBody Game game) {
    ResponseEntity<Object> output;
    String body;
    Game gameInBD;
    gameInBD = gameService.findByName(game);
    if (gameInBD == null) 
    {
        gameService.saveGame(game);
    } else 
    {
        /* updates gameInDB fields with game fields and persist gameInDB */
    }
    output= ResponseEntity.ok(game);

    return output;

如何避免这种从对象到函数的转换?

1 个答案:

答案 0 :(得分:0)

您要将类作为参数发送给帖子

应该是这样 ‘返回this.http.post(路径,游​​戏,选项);’

使用小写游戏