更新Google Search Console API发现文档指南

本文详细阐述了如何根据Google的强制性更新要求,迁移Google Search Console API的发现文档和相关服务调用。核心改动包括将旧的webmasters/v3服务迁移至新的searchconsole/v1,并更新相应的API调用方式和发现文档URL,以确保应用在2021年11月1日之后仍能正常运行,避免服务中断。

Google Search Console API发现文档更新概览

google search console api(原webmasters api)的发现文档进行了强制性更新,要求所有使用旧版webmasters/v3服务的项目在2021年11月1日前完成迁移。未及时更新的项目将不再受支持,并可能停止工作。此次更新的核心在于将api服务名称从webmasters变更为searchconsole,并将版本从v3更新为v1。同时,用于发现api的url也发生了变化。

主要变更点:

  • 旧发现文档URL: https://www.googleapis.com/discovery/v1/apis/webmasters/v3/rest
  • 新发现文档URL: https://searchconsole.googleapis.com/$discovery/rest
  • 旧服务名称/版本: webmasters/v3
  • 新服务名称/版本: searchconsole/v1

以下将详细说明在不同客户端库中如何进行这些必要的更新。

使用Google API PHP Client库的更新

对于使用googleapis/google-api-php-client库的PHP项目,核心的改动在于服务对象的实例化。尽管PHP客户端库通常会自动处理发现文档的获取,但您需要将代码中对旧Webmasters服务的引用更新为新的SearchConsole服务。

旧的API调用示例:

use Google\Client;
use Google\Service\Webmasters\SearchAnalyticsQueryRequest; // 注意这里的Webmasters

// ... 省略客户端初始化和认证代码 ...

$googlewebmasterssearchsnalyticsobject = new \Google_Service_Webmasters_SearchAnalyticsQueryRequest(); // 使用Webmasters服务类
$googlewebmasterssearchsnalyticsobject->setStartDate('1970-01-01');
$endDate = gmdate('Y-m-d');
$googlewebmasterssearchsnalyticsobject->setEndDate($endDate);
$googlewebmasterssearchsnalyticsobject->setDimensions(['page', 'date']);
$googlewebmasterssearchsnalyticsobject->setSearchType('web');
// ... 其他查询参数设置 ...

更新后的API调用示例:

您需要将代码中所有引用Google_Service_Webmasters或其子类的部分替换为Google_Service_SearchConsole。

use Google\Client;
use Google\Service\SearchConsole\SearchAnalyticsQueryRequest; // 注意这里的SearchConsole

// ... 省略客户端初始化和认证代码 ...

// 实例化新的Search Console服务对象
// 如果您的库版本较新,可能直接实例化Google_Service_SearchConsole即可
// 如果您直接使用了SearchAnalyticsQueryRequest,则需要修改其命名空间
$googleSearchConsoleService = new \Google_Service_SearchConsole($client); // 示例:实例化服务
// 然后使用该服务对象调用方法,例如:
$searchAnalyticsQueryRequest = new SearchAnalyticsQueryRequest(); // 使用新的SearchConsole命名空间下的请求类
$searchAnalyticsQueryRequest->setStartDate('1970-01-01');
$endDate = gmdate('Y-m-d');
$searchAnalyticsQueryRequest->setEndDate($endDate);
$searchAnalyticsQueryRequest->setDimensions(['page', 'date']);
$searchAnalyticsQueryRequest->setSearchType('web');

// 假设您正在调用Search Analytics API的query方法
// $response = $googleSearchConsoleService->searchanalytics->query($siteUrl, $searchAnalyticsQueryRequest);

重要提示:

  • 确保您的google-api-php-client库已更新到最新版本,以支持新的SearchConsole服务。您可以通过Composer运行composer update google/apiclient来更新。
  • 检查代码中所有直接或间接引用Webmasters服务的地方,并进行相应的替换。

使用Google API JavaScript Client库的更新

对于使用Google API JavaScript客户端库(gapi.client)的项目,更新主要集中在gapi.client.load函数的参数上。

旧的API加载方式:

gapi.client.load('webmasters', 'v3').then(function() {
    // ... API调用逻辑 ...
});

更新后的API加载方式:

您需要将服务名称从webmasters更改为searchconsole,并将版本从v3更改为v1。

gapi.client.load('searchconsole', 'v1').then(function() {
    // ... API调用逻辑 ...
    // 例如,调用searchanalytics.query方法:
    // gapi.client.searchconsole.searchanalytics.query({
    //     siteUrl: 'https://example.com/',
    //     resource: {
    //         startDate: '2023-01-01',
    //         endDate: '2023-01-31',
    //         dimensions: ['page', 'date']
    //     }
    // }).then(function(response) {
    //     console.log(response.result);
    // });
});

重要提示:

  • 对于JavaScript客户端,如果之前没有明确指定discoveryDocs参数,客户端会自动从默认位置加载。更新后,gapi.client.load函数会根据新的服务名称和版本加载对应的发现文档。
  • 验证您的JavaScript客户端库版本是否支持新的searchconsole/v1服务。

总结与注意事项

此次Google Search Console API的更新是强制性的,为确保您的应用程序持续稳定运行,请务必在截止日期前完成迁移。

  1. 更新客户端库: 无论您使用PHP、JavaScript还是其他语言的Google API客户端库,强烈建议将其更新到最新版本。新版本通常会包含对最新API的支持和必要的内部调整。
  2. 全面检查代码: 仔细审查您的整个项目代码库,查找所有引用旧webmasters/v3服务的地方,并将其替换为searchconsole/v1。这可能包括服务实例化、API调用方法以及任何硬编码的服务名称或版本字符串。
  3. 充分测试: 在部署到生产环境之前,务必在新配置下对所有相关的API功能进行彻底的测试,以确保数据获取和操作的正确性。
  4. 关注Google官方公告: 持续关注Google Webmasters或Search Console官方博客和文档,以获取未来API更新和最佳实践的最新信息。

通过遵循上述指南,您可以顺利完成Google Search Console API的迁移,确保您的应用程序能够无缝地与最新版本的API进行交互。

以上就是更新Google Search Console API发现文档指南的详细内容,更多请关注骃骐网【www.myinqi.com】。

相关推荐:

如何在 Tkinter 中动态更新 Label 文本

使用 time.sleep() 会导致 GUI 冻结,无法实时刷新界面;正确做法是利用 Tkinter 的 after() 方法实现非阻塞式定时更新,让 Label 每秒自动变化,保持界面响应流畅。 使用 `time.sleep()` 会导致 gui 冻结,无法实时刷新界面;正确做法是利用 tkinter 的 `after()` 方法实现非阻塞式定时更新,让 label 每秒自动变化,保持界面响应...

为什么Django的ORM不触发save方法_分析Python批量更新的局限性

update() 不触发 post_save 信号,因其绕过 ORM 实例层直接执行 SQL,不调用 save()、不实例化对象;save() 则触发信号、处理 auto_now 等逻辑,但并发下易覆盖字段,需用 update_fields 避免。 update() 方法根本不会调用模型的 save(),这是设计使然,不是 bug。它绕过 ORM 的实例层,直接拼 SQL 执行 —— 所以信号、a...

如何在 Tkinter 中动态更新 Label 文本(实时倒计时教程)

本文详解如何使用 root.after() 方法实现在 Tkinter 中非阻塞式动态更新 Label,避免 time.sleep() 导致界面冻结,适用于倒计时、实时状态显示等场景。 本文详解如何使用 `root.after()` 方法实现在 tkinter 中非阻塞式动态更新 label,避免 `time.sleep()` 导致界面冻结,适用于倒计时、实时状态显示等场景。 在 Tkinter ...

怎样用Python处理日志文件的滚动更新_使用logging.handlers

RotatingFileHandler 日志不按大小切分是因为仅在写入新日志且当前文件超 maxBytes 时触发滚动,非定时检查;需确保有日志输出、maxBytes 不宜过小(建议≥1024)、多进程须用 QueueHandler。 RotatingFileHandler 为什么日志不按大小切分 常见现象是配置了 maxBytes 和 backupCount,但日志始终只写入一个文件,从不生成 ...

怎样在Python Flask中集成Swagger接口文档_使用flasgger插件

用flasgger是Flask项目集成Swagger文档最轻量靠谱的选择;它通过装饰器和docstring生成可交互UI,需安装pyyaml并调用Swagger(app),注意YAML语法、definitions引用及类型书写规范。 Flask 项目里加 Swagger 文档,flasgger 是最轻量靠谱的选择 直接说结论:用 flasgger 比手写 OpenAPI YAML、或套 apisp...

怎样用Python将Word文档转换为PDF_利用comtypes或pypandoc

comtypes是Windows下调用Word最可靠的方案,因其直接启动本地Word进程、原生渲染、完美保留复杂格式且不依赖外部工具链;pypandoc跨平台但易受Pandoc/LaTeX环境限制,格式保真度低。 Windows 上用 comtypes 调用 Word 应用本身最可靠;跨平台或批量处理优先选 pypandoc,但依赖 Pandoc 和 LaTeX 环境,容易卡在安装环节。 为什么 ...

如何在 SciPy 优化中通过数据库更新动态传递参数

本文详解如何利用 scipy.optimize.minimize 实现“参数不直接传入黑盒、而通过实时更新 JSON 数据库间接驱动”的黑箱优化流程,涵盖文件 I/O 同步、目标函数设计、调试技巧及关键注意事项。 本文详解如何利用 `scipy.optimize.minimize` 实现“参数不直接传入黑盒、而通过实时更新 json 数据库间接驱动”的黑箱优化流程,涵盖文件 i/o 同步、目标函数...

怎样在Python Tkinter中实时更新Label显示文字_使用config方法或set变量

Label文字更新应优先用label.config(text="新内容");StringVar.set()仅在Label初始化时绑定textvariable才生效,否则无效。 Label文字不更新?检查是否用了正确的变量绑定方式 直接调用 label.config(text="新内容") 是最稳妥的实时更新方式;而用 StringVar 的 set() 方法只有在 Label 初始化时就绑定了 t...

如何在Python中执行在线学习模型更新_使用Creme或River库处理流数据

River 是当前唯一活跃、API 稳定、文档完整的在线学习框架,取代已停止维护且不兼容新 Python/NumPy 版本的 Creme;其核心为单样本增量更新 learn_one(),需手动处理数据映射、缺失值、类别编码及概念漂移检测,并注意序列化、线程安全与指标监控等部署细节。 在线学习模型更新不是“训练完再加载”,而是模型必须能接收单条或小批量新数据、实时调整参数——Creme 已停止维护,...