Strongloop android sdk自定义方法错误
Strongloop android sdk custom method error
尝试使用 android 客户端访问我的服务器上的自定义方法会产生错误请求错误。
这是服务器上的自定义方法(使用strongloop explorer测试):
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 是:“/Questions/top?start=0&pagination=2”,这是正确的 url(根据 strongloop 资源管理器)。
不过,使用函数 TOP returns 是一个错误的请求错误。
你知道我为什么会出错吗?我应该如何修改函数以获得结果?
终于找到答案了。错误在问题库中。
这是正确的代码:
@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 方法会自动将给定参数映射添加为具有以下形式的过滤器:
http://serverip:port/api/Questions/top?filter=value1&filter2=value2
尝试使用 android 客户端访问我的服务器上的自定义方法会产生错误请求错误。
这是服务器上的自定义方法(使用strongloop explorer测试):
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 是:“/Questions/top?start=0&pagination=2”,这是正确的 url(根据 strongloop 资源管理器)。 不过,使用函数 TOP returns 是一个错误的请求错误。
你知道我为什么会出错吗?我应该如何修改函数以获得结果?
终于找到答案了。错误在问题库中。
这是正确的代码:
@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 方法会自动将给定参数映射添加为具有以下形式的过滤器: http://serverip:port/api/Questions/top?filter=value1&filter2=value2