我正在尝试对wordpress rest api进行API调用。来自控制台的工作呼叫如下所示:
http://dev.thomastraum.com/wp-json/posts?type=tt_works&filter[work_categories]= all&filter[posts_per_page]=1
A"手写"来自Meteor的工作电话看起来像这样:
return Meteor.http.call("GET", Settings.wpdomain + "/wp-json/posts", {params: {'type':'tt_works','filter[work_categories]':'all','filter[posts_per_page]':'1'}});
现在我的问题是,如何将javascript对象传递给流星调用,最终它们的格式正确。对我来说,上面的调用看起来应该像这样表示:
ArchiveQuery = {
type:'tt_works',
filter:{
work_categories:'all',
posts_per_page:1
}
};
但如果我通过它
return Meteor.http.call("GET", Settings.wpdomain + "/wp-json/posts", {params:ArchiveQuery);
它返回所有类型参数为tt_works
的帖子,并忽略查询的所有其余部分。我尝试EJSON.stringify(ArchiveQuery)
,但它使用{}
以不同方式格式化查询。
答案 0 :(得分:1)
您需要的查询格式看起来不是很常见。我认为最简单的解决方案是自己格式化对象:
var fillQuery = function(query, prefix, object) {
_.each(object, function(val, key) {
var k = (prefix) ? prefix + '[' + key + ']' : key;
if(_.isObject(val)) {
fillQuery(query, k, val);
} else {
query[k] = '' + val;
}
});
return query;
};
var objectToQuery = function(object) {
return fillQuery({}, null, object);
};
请参阅here实际操作。