簡體   English   中英

訪問自定義 REST API 在正文中返回“可讀流”而不是 json 數據

[英]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對每頁可以訪問的記錄數有限制,因此我必須遍歷頁面並組合這些數據。

我使用這個答案來指導我構建返回的響應。

問題是當我嘗試使用fetchwp_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM