[英]accessing a custom REST API returns “Readable Stream” within the body instead of json data
我使用以下代碼在 WordPress 網站中構建了一個自定義 REST 端點:
add_action('rest_api_init', function() {
register_rest_route('wp/v2', '/all-posts/', array(
'methods' => 'GET',
'callback' => 'get_all_posts',
''
) );
});
function get_all_posts() {
$api_key = API_KEY;
$per_page = 50;
$pages = 20;
$display_response = json_encode('');
for($i = 0; $i < $pages; $i++) {
$page = $i;
$json = json_decode($display_response, true);
$documents_url = API_URL;
$response = wp_remote_get("$documents_url?auth_token=$api_key&page=$page&per_page=$per_page");
$json .= $response['body'];
$display_response = json_encode($json);
}
return $display_response;
};
如您所見,我正在訪問的API
對每頁可以訪問的記錄數有限制,因此我必須遍歷頁面並組合這些數據。
我使用這個答案來指導我構建返回的響應。
問題是當我嘗試使用fetch
或wp_remote_get
訪問時,此響應不會提供可用代碼。
特別是當我使用以下代碼時:
const response = await fetch('https://mydomain/wp-json/wp/v2/all-posts/')
const data = await response.json()
console.log(data)
返回的只是我試圖訪問的所有數據的長字符串,而不是我在獲取 JSON 時所期望的對象數組。
所以這是真正的問題,為什么這只是返回一個長字符串,看起來像 JSON 而不是實際的 JSON?
當在我的php
代碼中設置$posts
以等於響應正文時,不會返回任何內容。
還有兩個注意事項:
1)WordPress端點( https://mydomain/wp-json/wp/v2/all-posts/
)上顯示有數據,但其中有很多\
。 2)我還嘗試更改 function 末尾的return
值以return json_decode($display_response)
並return $display_response['body']
產生相同的結果。
我假設我錯誤地添加到json
以便在返回時返回錯誤,但我很困惑。
您需要放置以下代碼:
const response = await fetch('https://mydomain/wp-json/wp/v2/all-posts/');
const data = await response.json();
console.log(data);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.