yuu*_*roh 5 python google-api google-api-python-client google-cloud-platform
我想问一下googleapiclient中discovery.build的使用。
from googleapiclient import discovery
credentials = Credentials(None, client_id="creds1234.apps.googleusercontent.com", client_secret="secret")
resource = discovery.build("forms", "v1", discoveryServiceUrl="https://forms.googleapis.com/$discovery/rest?version=v1", credentials = credentials)
Run Code Online (Sandbox Code Playgroud)
我一直在尝试使用这个资源,但我无法理解它的真正用途。我已经检查了文档,但我的理解是它填充了我一直在使用的 api 方法和函数的定义,在本例中为 Forms API。
我以为我会对它感兴趣,那么它能做什么呢?
谢谢。
Google 为所有用户提供客户端库 (SDK)。
这些库由 Google 以 Python、Go、Java、.NET 等形式提供。
为了促进这个库矩阵(服务*语言)的发布,Google 开发了一种机制,可以从服务模式自动生成代码。这些模式用 Google 的说法称为Discovery 文档。有趣的是,还有一项名为Discovery 服务的 Google 服务,它有一个list您可以在该页面上尝试的方法。例如forms
给定 Discovery 文档和客户端库生成器,可以即时生成客户端库。
(开源)Python API 客户端库包括discovery.build,它为您提供的服务生成资源。
您可以简化您的代码:
discovery.build("forms", "v1", credentials = credentials)
Run Code Online (Sandbox Code Playgroud)
API 客户端库为所有 Google 服务提供此功能。如果您扫描页面,您将找到该Forms服务及其版本v1(根据您的代码)。该链接将带您访问 API文档
查找 Google 服务文档的另一种方法(不是通过编程语言,尽管有时会提供示例)是使用API Explorer。您可以搜索并访问以下内容的 REST 文档:Google Forms. 这还提供了 Discovery 文档的链接;-)
注意:API Explorer REST 文档实际上记录了 API 的 2 个版本v1(v1beta请参见左侧)。所以,你也可以discovery.build("forms","v1beta",credentials=credentials)因此,如果您需要增强的方法,
得益于 Discovery 机制以及 Google 在 API 更改时触发客户端库构建的事实,您可以放心,客户端库几乎总是 API 的完美反映。
注意:基于 REST 的 API 模式的代码生成通常使用Swagger(又名开放 API)完成。Google Discovery 早于 swagger 出现。我认为(!?)Google 没有为其库提供开放 API 模式。Google为其某些服务提供了 REST 的替代方案,称为gRPC 。gRPC 有自己的代码生成机制。
该discovery.build()方法为 Google Python API 客户端构建一个服务对象(您的resource变量),它允许您轻松使用内置方法来访问给定 API(在您的情况下为 API forms)的 API 端点。
在您的特定情况下,您可以利用服务对象以比直接指定所有 API 端点更简单的方式resource调用任何Google Forms API 。
resource使用服务对象检索对 Google 表单的所有响应的示例:
# Prints the responses of your specified form:
form_id = '<YOUR_FORM_ID>'
result = resource.forms().responses().list(formId=form_id).execute()
print(result)
Run Code Online (Sandbox Code Playgroud)
有关 Google Forms API 的更详细示例,请参阅官方开发人员文档
| 归档时间: |
|
| 查看次数: |
14333 次 |
| 最近记录: |