我第一次擺弄 REST API,所以我的知識非常少。我正在使用 Google Apps 腳本通過 REST API 管理 Wordpress 資料。
POSTRequests are perfectly working when options are passed through the URL parameters, while they are ignored when using body.
我最初認為這是由于 Wordpress 端點上的一些問題造成的,但是,由于使用Postman發送請求,呼叫被正確處理,我想我的 Google Apps 腳本發送的資料不正確。
Postman 將公開發送的資料,提供為給定語言生成代碼的選項,因此我使用 JavascriptFetch作為起點。
以下是 Postman 生成的代碼,由 Wordpress 正確處理:
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer some-token-here");
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Cookie", "wordpress_google_apps_login=some-cookie-data-here");
var raw = JSON.stringify({
"acf": {
"class": "Nursery"
}
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://example.com/wp-json/wp/v2/users/442?context=edit&_fields=acf", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
以上述為出發點,我為 Google Apps Script 改編了代碼,如下:
var raw = JSON.stringify({
"acf": {
"class": "Nursery"
}
});
var requestOptions = {
'method': 'POST',
'headers': {'Authorization' : 'Bearer some-token-here',
'Content-Type' : 'application/json'},
'body': raw,
'redirect': 'follow'
};
var response = UrlFetchApp.fetch("https://example.com/wp-json/wp/v2/users/442?context=edit&_fields=acf",requestOptions);
Google Apps 腳本將回傳帶有 code 的回應200,但不會發生請求的修改。請注意 Postman 生成的代碼使用'Content-Type',而 Google Apps Script 應該使用'ContentType'引數。我都試過了,都沒有成功。
修改后的代碼中是否存在一些錯誤,或者是否缺少某些內容,甚至最糟糕的是,Google Apps 腳本有一些限制,還是它以某種方式改變了POST請求,使其在 Wordpress 端沒有正確解釋?
編輯
@idfurw 解決方案的一個快速補充是,它還需要使用“Content-Type”,因為包含“ContentType”的請求將被忽略!
uj5u.com熱心網友回復:
要發布正文,請使用payload屬性而不是body屬性。
參考:
- fetch(url, params)的例子
- 高級引數
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/518542.html
