2

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

2 番目の方法で機能しないのはなぜですか? または、URL に対してクエリされたパラメーターを使用して行う必要がありますか?

よろしく。

4

1 に答える 1

3

私はそれを解決しました。Content-Type を使用し、データに対してapplication/x-www-form-urlencodedAngular を使用する必要がありました。$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);
});
于 2016-04-16T23:32:19.703 に答える