Как сделать недействительным кеш Google CDN с помощью REST API Java?
Я искал рабочий пример для этого, но не нашел.
Я сослался на следующие ссылки Ссылка на Stackru и Официальные документы Google
Из этих документов я понял, что мне нужно реализовать это
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.compute.Compute;
import com.google.api.services.compute.model.CacheInvalidationRule;
import com.google.api.services.compute.model.Operation;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Arrays;
public class ComputeExample {
public static void main(String args[]) throws IOException, GeneralSecurityException {
// Project ID for this request.
String project = "my-project"; // TODO: Update placeholder value.
// Name of the UrlMap scoping this request.
String urlMap = "my-url-map"; // TODO: Update placeholder value.
// TODO: Assign values to desired fields of `requestBody`:
CacheInvalidationRule requestBody = new CacheInvalidationRule();
Compute computeService = createComputeService();
Compute.UrlMaps.InvalidateCache request =
computeService.urlMaps().invalidateCache(project, urlMap, requestBody);
Operation response = request.execute();
// TODO: Change code below to process the `response` object:
System.out.println(response);
}
public static Compute createComputeService() throws IOException, GeneralSecurityException {
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
GoogleCredential credential = GoogleCredential.getApplicationDefault();
if (credential.createScopedRequired()) {
credential =
credential.createScoped(Arrays.asList("https://www.googleapis.com/auth/cloud-platform"));
}
return new Compute.Builder(httpTransport, jsonFactory, credential)
.setApplicationName("Google-ComputeSample/0.1")
.build();
}
}
НО, если вы видите этот пример, на его месте есть только значения-заполнители.
ЕСЛИ Я ХОТЕЛ ПРОМЫВИТЬ КЭШ СТРАНИЦЫ, ВЫЗВАННОЙ https://mywebsite.com/homepage.html, ГДЕ Я БУДУ ВСТАВИТЬ ДАННУЮ ИНФОРМАЦИЮ В КОД ВЫШЕ?
Я добавил это сюда
credential.createScoped(Arrays.asList("https://mywebsite.com/homepage.html"));
ИЛИ Я должен добавить его в UrlMaps? Это очень сбивает с толку.
2 ответа
Он должен находиться в теле запроса. В теле запроса содержатся данные следующей структуры:
JSON representation
{
"path": string,
"host": string
}
Эти поля принимают следующие значения:
- путь как строка
- хост как строка
Если установлено, это правило аннулирования будет применяться только к запросам с заголовком Host, совпадающим с хостом.
Возможно, вам потребуется создать объект requestbody
CacheInvalidationRule requestBody = new CacheInvalidationRule();
это должно создать объект cacheinvalidationrule и назначить requestBody
Кроме того, вам может понадобиться что-то вроде этого
requestBody.setHostand requestBody.setPath = ""
Эти два свойства принимают строку в качестве аргумента
requestBody.setHost=" mywebsite.com"
а также
requestBody.setPath = "/homepage.html"
Надеюсь, это поможет, удачи
Я бы посоветовал проверить класс developers.google.com Compute.UrlMaps.InvalidateCache, использовать краткое описание метода. Я считаю, что вам было бы полезно понять этот класс и то, как включить его в свой код. Он содержит подробную информацию о методе и описание параметра, например
Сведения о конструкторе InvalidateCache
protected InvalidateCache(java.lang.String project,
java.lang.String urlMap,
CacheInvalidationRule content)
Инициирует операцию аннулирования кеша, аннулируя указанный путь, ограниченный указанным UrlMap. Создайте запрос на метод urlMaps.invalidateCache. Этот запрос содержит параметры, необходимые для вычислительного сервера. После установки любых дополнительных параметров вызовите метод AbstractGoogleClientRequest.execute(), чтобы вызвать удаленную операцию.
InvalidateCache#initialize(com.google.api.client.googleapis.services.AbstractGoogleC lientRequest)
должен быть вызван для инициализации этого экземпляра сразу после вызова конструктора.
Параметры:
- проект - ID проекта для этого запроса.
- urlMap - Имя UrlMap, охватывающего этот запрос.
- содержание -
CacheInvalidationRule
Детали метода, например для набора setAlt
public Compute.UrlMaps.InvalidateCache set(java.lang.String parameterName,
java.lang.Object value)