Strongloop android sdk自定义方法错误

时间:2015-04-03 07:59:39

标签: loopbackjs strongloop

尝试使用Android客户端在我的服务器上访问自定义方法会产生错误的请求错误。

这是服务器上的自定义方法(使用strongloop资源管理器测试):

Question.remoteMethod(
    'top', {
        http: {path: '/top', verb: 'get'},
        accepts: [
                    {arg : 'start', type: 'number'},
                    {arg: 'pagination', type: 'number'}

                ],
        returns: {arg: 'questions', type: 'array'},
        description: ['Returns an array obj the latest added questions']
    }
);

android问题库中的代码:

@Override
public RestContract createContract() {

    RestContract contract = super.createContract();

    contract.addItem(
        new RestContractItem("/" + getNameForRestUrl() + "/top?" +
            "start=" + ":start" + "&pagination=" + ":pagination", "GET"),
        getClassName() + ".top");

    return contract;
}

public void top(int start, int pagination, ListCallback<Question> cb) {
    Map<String, Integer> params = new HashMap<String, Integer>();
    params.put("start", start);
    params.put("pagination", pagination);
    invokeStaticMethod("top", params,
            new JsonArrayParser<Question>(this, cb));
}

当我使用以下代码测试创建的请求url时:

RestContract contract = this.createContract();
Map<String, Integer> params = new HashMap<String, Integer>();
        params.put("start", 0);
        params.put("pagination", 2);
        String t = contract.getUrl("/" + getNameForRestUrl() + "/top?" +
                "start=" + ":start" + "&pagination=" + ":pagination", params);

t是:&#34; / Questions / top?start = 0&amp; pagination = 2 &#34;这是正确的网址(根据strongloop资源管理器)。 尽管如此,使用fucntion TOP会返回错误的请求错误。

你知道我为什么会收到错误,以及我应该如何修改函数以获得结果?

1 个答案:

答案 0 :(得分:2)

终于得到了答案。该错误位于问题库中。

这是正确的代码和平:

@Override
public RestContract createContract() {

    RestContract contract = super.createContract();

    contract.addItem(
        new RestContractItem("/" + getNameForRestUrl() + "/top", "GET"),
        getClassName() + ".top");
}

public void top(int start, int pagination, ListCallback<Question> cb) {
    Map<String, Integer> params = new HashMap<String, Integer>();
    params.put("start", start);
    params.put("pagination", pagination);
    invokeStaticMethod("top", params,
        new JsonResponseParser<Question>(this, cb, "questions"));
}

创建剩余合约时不能指定过滤器,因为使用下面的top方法会自动将给定参数Map的参数添加为具有以下形式的过滤器: http://serverip:port/api/Questions/top?filter=value1&filter2=value2