Ich habe einen einfachen Endpunkt. GET, ich übergebe ihm einen ID-Parameter und er verwendet diese ID, um einen Curl-Aufruf zu tätigen. Der Endpunkt antwortet dann mit einigen Informationen json_encoded.
Das Problem ist, dass dieser Endpunkt seine Ergebnisse immer wieder zwischenspeichert. Wie verhindere ich das?
Paar Notizen:
Der Endpunktcode ist ziemlich einfach:
// 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);
}
Ich rufe den Endpunkt über jQuery Ajax an.
Wenn Sie Zugriff auf Ihren Anforderungskopf haben, können Sie die Zeile hinzufügen. Cache-Control: private
oder Cache-Control: no-cache
. Dadurch werden gut erzogene Hosts gezwungen, Ihnen neue Ergebnisse zu senden.
Sie sollten eine neue Instanz aus WP_REST_Response
erstellen, um den Cache-Control-Wert festzulegen.
<?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;
}