WP REST API v2和Angular $ http POST请求

时间:2016-04-16 23:24:18

标签: angularjs wordpress rest angular-http wordpress-rest-api

我正在尝试使用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的参数吗?

问候。

1 个答案:

答案 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);
});