0

我一直在为此研究一个工作示例,但没有找到任何示例。

我参考了以下链接 Stackoverflow LinkGoogle Official Docs

从这些文档中,我确实了解到我需要实现这一点

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 中添加它吗?这非常令人困惑。

4

2 回答 2

1

它应该在请求正文中。请求正文包含具有以下结构的数据

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"

希望对你有帮助,祝你好运

于 2020-04-23T22:47:48.730 回答
0

我建议检查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)

必须在调用构造函数后立即调用以初始化此实例。

参数:

  • project - 此请求的项目 ID。
  • urlMap - 确定此请求范围的 UrlMap 的名称。
  • 内容——CacheInvalidationRule

例如 setAlt set 的方法详细信息

public Compute.UrlMaps.InvalidateCache set(java.lang.String parameterName,
                                           java.lang.Object value)
于 2020-04-24T17:00:37.973 回答