如何从角度发送json对象到休息服务?

时间:2017-01-23 19:28:10

标签: java angularjs json typescript

我尝试将json对象发送到休息服务,但是我得到了一些错误:

  

http://localhost:8080/api/v1/cardLimit 400(错误请求);

换行到JSON

 public class GameLimit implements Serializable {

    private static final long serialVersionUID = 1L;

    private LimitType firstLimit;
    private LimitType secondLimit;

    public LimitType getFirstLimit() {
        return firstLimit;
    }

    public void setFirstLimit(LimitType firstLimit) {
        this.firstLimit = firstLimit;
    }

    public LimitType getSecondLimit() {
        return secondLimit;
    }

    public void setSecondLimit(LimitType secondLimit) {
        this.secondLimit = secondLimit;
    }
}


public class LimitType implements Serializable{

    private static final long serialVersionUID = 1L;

    private BigDecimal limit;
    private String type;
    private String status;

    public BigDecimal getLimit() {
        return limit;
    }

    public void setLimit(BigDecimal limit) {
        this.limit = limit;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

限制请求对象

public class LimitReq extends GameLimit {

    private String key;

    public String getKey() {
        return key;
    }
}

RestController:

@RequestMapping(value = "/GameLimit", method = RequestMethod.POST)
    public Response setCardLimit(@RequestBody GameLimitReq request) throws Exception {
        return limitService.updateGameLimit(request);
    }

TypeScript客户端:

changeLimits(firstLimit: IWidgetLimit, secondLimit: IWidgetLimit, key: string): ng.IPromise<any> {
            return this.$http.post(this.apiPrefix + '/GameLimit', {
                'firstLimit': {
                    limit: firstLimit.limit,
                    type: firstLimit.type,
                    status: firstLimit.status
                },
                'secondLimit': {
                    limit: secondLimit.limit,
                    type: secondLimit.type,
                    status: secondLimit.status,
                },

                key: key
            }).then(function (response: any) {
                return response.data;
            }.bind(this));
        }

2 个答案:

答案 0 :(得分:0)

看到此question and answer 400错误表示您的json格式不正确。

从您的代码段开始,似乎行limitService.updateGameLimit(request);应该提供JSON,但它不包含在代码snipets中。获得该方法的输出后,可以通过JsonLint运行它来检查语法。然后可以从那里进行修理。

从你的打字稿客户端看来,这提供了无效的json。虽然我并不完全精通打字稿,但即使有隐含的引号,这肯定会有一些格式错误的JSON。至少应该有firstLimit,secondLimit和key的双引号。

答案 1 :(得分:0)

这是因为你的json没有正确形成。

有多种原因
  1. 您的密钥应该是字符串,并用引号括起来。例如:使用“type”而不是类型
  2. 您在行尾有逗号

    status: secondLimit.status,
    

    删除该逗号。

  3. 完成后,请在jsonlint.com或类似服务上验证示例输出。它可以帮助你找出错误。