我正在尝试使用WP-REST API v2和AngularJS的http向我的WordPress博客添加评论。使用GET请求一切正常。
如果我以这种方式使用POST请求(将参数添加到URL),一切正常,评论随数据一起添加。
$http({
method: 'POST',
url: 'http://myblog.com/json/wp-json/wp/v2/comments?author_name=Myself&content=Hello guys',
headers: {
'Content-Type': undefined
}
}).then(function (res) {
console.info('[REST] POST request sent to "' + route + '"');
d.resolve(res);
}, function (err) {
console.error('[REST] POST request failed. Error message: ', err);
d.reject(err);
});
但是,如果我以这种方式使用它,使用"数据" $ http.get的参数(根据文档),评论被添加到WordPress但它是空的。没有内容或名称。
$http({
method: 'POST',
url: 'http://myblog.com/json/wp-json/wp/v2/comments',
headers: {
'Content-Type': undefined
},
data: {
author_name: 'Myself',
content: 'Hello guys'
}
}).then(function (res) {
console.info('[REST] POST request sent to "' + route + '"');
d.resolve(res);
}, function (err) {
console.error('[REST] POST request failed. Error message: ', err);
d.reject(err);
});
为什么第二种方式不起作用?或者我应该使用查询到URL的参数吗?
问候。
答案 0 :(得分:3)
我解决了。我必须使用application/x-www-form-urlencoded
Content-Type并在数据上使用Angular的$httpParamSerializerJQLike
。
$http({
method: 'POST',
url: self.address + route,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: $httpParamSerializerJQLike(params)
}).then(function (res) {
console.info('[REST] POST request sent to "' + route + '"');
d.resolve(res);
}, function (err) {
console.error('[REST] POST request failed. Error message: ', err);
d.reject(err);
});