私は簡単なエンドポイントを持っています。そのGETは、私はそれにIDパラメータを渡し、それはカール呼び出しを行うためにこのIDを使用しています。その後、エンドポイントはjson_encodedという2つの情報で応答します。
問題は、このエンドポイントが結果をキャッシュし続けることです。どうしたらこれを防ぐことができますか?
カップルノート:
エンドポイントコードは非常に単純です。
// Get Number of people in line
add_action( 'rest_api_init', function () {
register_rest_route( 'cc/v1', '/in_line/(?P<id>\d+)', array(
'methods' => WP_REST_Server::READABLE,
'callback' => 'in_line',
'args' => [
'id'
],
) );
} );
function in_line($data) {
//Do a bunch of Curl stuff
$response['queue'] = $number;
$response['queueID'] = $data['id'];
return json_encode($response);
}
私はjQueryのAjaxを介してエンドポイントを呼び出します。
リクエストヘッダにアクセスできる場合は、行を追加することができます。 Cache-Control: private
またはCache-Control: no-cache
。これは行儀の良いホストにあなたに新鮮な結果を送ることを強いるでしょう。
Cache-Control値を設定するには、WP_REST_Response
から新しいインスタンスを作成する必要があります。
<?php
// Get Number of people in line
add_action( 'rest_api_init', function () {
register_rest_route( 'cc/v1', '/in_line/(?P<id>\d+)', array(
'methods' => WP_REST_Server::READABLE,
'callback' => 'in_line',
'args' => [
'id'
],
) );
} );
function in_line($data) {
//Do a bunch of Curl stuff
$response['queue'] = $number;
$response['queueID'] = $data['id'];
$result = new WP_REST_Response($response, 200);
// Set headers.
$result->set_headers(array('Cache-Control' => 'no-cache'));
return $result;
}