本页面介绍了如何使用 Python 版 Cloud Endpoints Frameworks 配置、部署示例 API 以及向其发送请求。Python 版 Endpoints Frameworks 与 App Engine 标准 Python 2.7 运行时环境集成。Endpoints Frameworks 具备各种工具、库和功能,可供您通过 App Engine 应用生成 API 和客户端库。
目标
学习本教程时,请使用以下概要任务列表。为确保请求成功发送到 API,您必须完成所有任务。
- 设置 Google Cloud 项目。请参阅准备工作。
- 安装所需的软件并创建 App Engine 应用。请参阅安装和配置所需的软件。
- 下载示例代码。请参阅获取示例代码。
- 生成 OpenAPI 文档。请参阅配置 Endpoints。
- 部署 Endpoints 配置以创建 Endpoints 服务。请参阅部署 Endpoints 配置。
- 在计算机上运行该示例。请参阅在本地运行示例。
- 创建后端,以提供 API 并部署 API。请参阅部署 API 后端。
- 向 API 发送请求。请参阅向 API 发送请求。
- 跟踪 API 活动。请参阅跟踪 API 活动。
- 避免您的 Google Cloud 账号产生费用。请参阅清理。
费用
在本文档中,您将使用 Google Cloud的以下收费组件:
 
 
 
  如需根据您的预计使用量来估算费用,请使用价格计算器。
  
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 记下 Google Cloud 项目 ID,稍后需要用到。
- 按照安装 Python 版 Google Cloud CLI 中的说明获取 App Engine 标准开发环境设置。请务必安装 app-engine-python和app-engine-python-extrasgcloud组件。
- 运行以下命令:
- 
        更新 gcloud CLI。
        gcloud components update 
- 
        确保 Google Cloud CLI (gcloud) 有权访问您在 Google Cloud上的数据和服务:gcloud auth login 
- 在浏览器打开的新标签页中选择账号。
- 
        将默认项目设置为您的项目 ID。
        gcloud config set project [YOUR_PROJECT_ID] 将 [YOUR_PROJECT_ID]替换为您的 Google Cloud项目 ID。如果您有其他 Google Cloud 项目,并且想使用gcloud来管理这些项目,请参阅管理 gcloud CLI 配置。
 
- 
        更新 gcloud CLI。
        
- 
    
您需要一个应用来向示例 API 发送请求。 - Linux 和 macOS 用户:本教程提供了一个使用 curl的示例,它通常已预装在您的操作系统中。如果您没有curl,可以从curl版本和下载页面中下载。
- Windows 用户:本教程提供了一个使用 Invoke-WebRequest的示例,PowerShell 3.0 及更高版本支持该命令。
 
- Linux 和 macOS 用户:本教程提供了一个使用 
- 确保您的 python 开发环境包括 pip。
- 确保您可以编译 Python 版 C 扩展程序。- Windows:需要 Microsoft Visual C++ 9.0 或更高版本。您可以从 Microsoft 下载中心下载 Microsoft Visual C++ 编译器(Python 2.7 版)
- 其他操作系统:根据您使用的操作系统,您可能需要安装编译器工具(有时包含在软件包 build-essential中)或 Python 开发头文件(有时包含在软件包python-dev中)。
 
- 
    对于 Linux,将 ENDPOINTS_GAE_SDK环境变量设置为您的 App Engine SDK 文件夹路径:[Path-to-Google-Cloud-SDK]/platform/google_appengine。将 [Path-to-Google-Cloud-SDK]替换为以下命令的输出:gcloud info --format="value(installation.sdk_root)" 
- 创建 App Engine 应用:
- 选择要在其中创建 App Engine 应用的区域。运行以下命令以获取区域列表:gcloud app regions list 
- 使用以下命令创建 App Engine 应用。将 [YOUR_PROJECT_ID]替换为您的 Google Cloud项目 ID,并将[YOUR_REGION]替换为您要在其中创建 App Engine 应用的区域。gcloud app create \ --project=[YOUR_PROJECT_ID] \ --region=[YOUR_REGION] 例如: gcloud app create --project=example-project-12345 --region=us-central 
 
- 选择要在其中创建 App Engine 应用的区域。运行以下命令以获取区域列表:
安装和配置所需的软件
获取示例代码
要从 GitHub 克隆示例 API,请执行以下操作:
- 将示例代码库克隆到本地计算机: - git clone https://github.com/GoogleCloudPlatform/python-docs-samples
- 切换到包含示例代码的目录: - cd python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
配置 Endpoints
要配置 Endpoints,首先必须安装 Endpoints Frameworks Python 库。然后,您可以使用 Endpoints Frameworks 库中的工具为示例 API 生成 OpenAPI 文档。您需要使用 Endpoints Frameworks 库和 OpenAPI 文档,以便 Endpoints 可以管理 API。如需了解详情,请参阅添加 API 管理。
安装 Endpoints Frameworks 库
本部分逐步介绍如何使用 Python 的 pip 向示例 API 的项目目录添加 Endpoints Frameworks 库。
如需将 Endpoints Frameworks 库添加到示例,请执行以下操作:
- 请确保您位于示例 API 的主目录 - python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo中。
- 在项目中创建一个 - /lib子目录:- mkdir lib
- 在示例主目录 - python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo中,运行安装命令:- pip install --target lib --requirement requirements.txt --ignore-installed- 请注意以下事项: - 此 - pip命令可使用 GNU 编译器集合 (GCC) 来编译扩展程序模块。如果您使用的是 macOS,并且是第一次在系统上运行 GCC,则可能必须接受 Apple 的 XCode 许可。为此,请运行- sudo xcodebuild -license。
- 如果您的计算机上安装了多个 Python 版本,请确保所用的 - pip版本与您将在本教程中使用的 Python 版本对应。版本不一致(例如,- pip的版本为 Python 3.4,而所用的- python的版本为 Python 2.7)可能导致难以理解的错误。如果需要,您可以将 pip 作为 Python 模块运行:将上述命令中的- pip替换为- python -m pip。
- 如果 - pip在运行命令时找不到合适的软件包,请尝试运行- pip install --upgrade pip以将其升级。升级完成后,再次尝试安装命令。
- 在一些 Debian 和 Ubuntu 版本上, - pip可能会失败,并显示 DistutilsOptionError。如果出现此错误,请添加 --system 标志。
 
成功完成后,系统会用构建 Endpoints Frameworks 应用所需的文件填充 lib 目录。
生成 OpenAPI 文档
您可以使用 Endpoints Frameworks 库中的工具生成文档来描述示例代码的 REST API。
要生成 OpenAPI 文档,请执行以下操作:
- 确保您位于示例主目录中: - python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
- 生成 OpenAPI 文档: - python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi --hostname [YOUR_PROJECT_ID].appspot.com- 将 - [YOUR_PROJECT_ID]替换为您的 Google Cloud 项目 ID。忽略显示的警告。Endpoints 工具在当前目录中生成名为- echov1openapi.json的 OpenAPI 文档。Endpoints 工具将根据- @endpoints.api修饰器中指定的服务名称和版本为文件命名。如需了解详情,请参阅创建 API。- Endpoints 会将 - hostname参数中指定的文本用作服务名称。该- YOUR_PROJECT_ID.appspot.com名称格式与您将 API 部署到 App Engine 后端时由系统自动创建的 DNS 条目匹配。因此,在这种情况下,Endpoints 服务名称和完全限定的域名 (FQDN) 相同。
成功完成后,系统会显示以下消息:OpenAPI spec written to ./echov1openapi.json
部署 Endpoints 配置
要部署 Endpoints 配置,请使用 Service Infrastructure,这是 Google 的基础服务平台,供 Endpoints 和其他服务用来创建和管理 API 及服务。
要部署配置文件,请执行以下操作:
- 确保您位于示例主目录中:python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo 
- 通过运行以下命令,部署在上一部分生成的 OpenAPI 文档:gcloud endpoints services deploy echov1openapi.json 这会创建一个新的 Endpoints 服务,其名称由您运行 Endpoints 工具以生成 OpenAPI 文档时在 hostname参数中指定。无论 Endpoints 服务名称是什么,当您在 App Engine 上部署 API 时,系统都会使用名称格式YOUR_PROJECT_ID.appspot.com创建一条 DNS 记录,这是您向 API 发送请求时使用的 FQDN。在创建和配置服务时,Service Management 会向终端输出大量信息。您尽可忽略有关 echov1openapi.json中的路径未要求 API 密钥的警告。部署完成后,您将看到如下所示的消息:Service Configuration [2017-02-13r2] uploaded for service [example-project-12345.appspot.com] 在上面的示例中, 2017-02-13-r2是服务配置 ID,example-project-12345.appspot.com是服务名称。如需了解详情,请参阅 gcloud参考文档中的gcloud endpoints services deploy。
检查所需服务
要提供 API 管理功能,Endpoints Frameworks 需要以下服务:| 名称 | 标题 | 
|---|---|
| servicemanagement.googleapis.com | Service Management API | 
| servicecontrol.googleapis.com | Service Control API | 
在大多数情况下,gcloud endpoints services deploy 命令会启用这些必需的服务。但在以下情况下,gcloud 命令会成功完成,但不启用必需的服务:
- 您使用了 Terraform 之类的第三方应用,但未添加这些服务。 
- 您将 Endpoints 配置部署到已明确停用这些服务的现有Google Cloud 项目。 
使用以下命令确认必需服务是否已启用:
gcloud services list
如果您没有看到列出的必需服务,请启用它们:
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com同时启用 Endpoints 服务:
gcloud services enable ENDPOINTS_SERVICE_NAME
要确定 ENDPOINTS_SERVICE_NAME,您可以执行以下任一操作:
- 部署 Endpoints 配置后,前往 Cloud 控制台中的 Endpoints 页面。服务名称列下显示了可能的 ENDPOINTS_SERVICE_NAME 列表。 
- 对于 OpenAPI,ENDPOINTS_SERVICE_NAME 是您在 OpenAPI 规范的 - host字段中指定的值。对于 gRPC,ENDPOINTS_SERVICE_NAME 是您在 gRPC Endpoints 配置的- name字段中指定的值。
如需详细了解 gcloud 命令,请参阅 gcloud 服务。
在本地运行示例
部署 Endpoints 配置后,您可以使用本地开发服务器在本地运行示例。
- 确保您位于示例主目录中: - python-docs-samples/appengine/standard/endpoints-frameworks-v2/echo
- 启动本地开发服务器: - dev_appserver.py ./app.yaml- 默认情况下,开发服务器会侦听 - http://localhost:8080,如- dev_appserver.py输出的 Google Cloud 控制台日志中所示:- INFO 2018-01-01 [...] Starting module "default" running at: http://localhost:8080
- 向本地开发服务器发送请求: 
Linux 或 Mac OS
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --data '{"message":"hello world"}' \
    http://localhost:8080/_ah/api/echo/v1/echo
在上面的 curl 中:
- --data选项用于指定要发布到 API 的数据。
- --header选项用于指定数据采用 JSON 格式。
PowerShell
(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' `
    -Headers @{"content-type"="application/json"} `
    -URI "http://localhost:8080/_ah/api/echo/v1/echo").Content
在上面的示例中,前两行以反引号结束。将示例粘贴到 PowerShell 中时,请确保反引号后面没有空格。 要了解示例请求中使用的选项,请参阅 Microsoft 文档中的 Invoke-WebRequest。
API 会回显您向其发送的消息,并以如下内容作为响应:
{
 "message": "hello world"
}
部署 API 后端
到目前为止,您已将 OpenAPI 文档部署到 Service Management,但尚未部署用于为 API 后端提供服务的代码。本部分逐步介绍如何将示例 API 部署到 App Engine。
要部署 API 后端,请执行以下操作:
- 运行以下命令以显示服务配置 ID:
gcloud endpoints configs list --service=[YOUR_PROJECT_ID].appspot.com 将 [YOUR_PROJECT_ID]替换为您的项目 ID。例如:gcloud endpoints configs list --service=example-project-12345.appspot.com 
- Open the app.yamlfile in thepython-docs-samples/appengine/standard/endpoints-frameworks-v2/echodirectory.
- 在 env_variables部分进行以下更改:- 在 ENDPOINTS_SERVICE_NAME字段中,将YOUR-PROJECT-ID替换为您的 Google Cloud 项目 ID。
- 在 ENDPOINTS_SERVICE_VERSION字段中,将文本替换为服务配置 ID。例如:
 ENDPOINTS_SERVICE_NAME: example-project-12345.appspot.com ENDPOINTS_SERVICE_VERSION: 2017-02-13r2 
- 在 
- 运行以下命令:gcloud app deploy 
- 按照屏幕上的提示操作。等待部署成功完成,忽略警告消息。部署完成后,系统将显示如下所示的消息:File upload done. Updating service [default]...done. 如果收到错误消息,请参阅 App Engine 文档的问题排查部分了解相关信息。 我们建议您等待几分钟,然后在 App Engine 完全初始化时向 API 发送请求。 
- --data选项用于指定要发布到 API 的数据。
- --header选项用于指定数据采用 JSON 格式。
- 选择 POST作为 HTTP 谓词。
- 对于标头,请选择键 content-type和值application/json。
- 对于正文,请输入以下内容:
 {"message":"hello world"}
- 
输入示例应用的网址。例如:
 https://example-project-12345.appspot.com/_ah/api/echo/v1/echo
- 在 Google Cloud 控制台的 Endpoints > 服务页面上查看 API 的活动图表。 - 请求可能需要一些时间才能体现在图表中。 
- 在“日志浏览器”页面中查看 API 的请求日志。 
向示例 API 发送请求
Linux 或 Mac OS
使用 curl 发送 HTTP 请求。将 [YOUR_PROJECT_ID] 替换为您的Google Cloud 项目 ID:
curl \
    --request POST \
    --header "Content-Type: application/json" \
    --data '{"message":"hello world"}' \
    https://[YOUR_PROJECT_ID].appspot.com/_ah/api/echo/v1/echo
在上面的 curl 中:
PowerShell
使用 Invoke-WebRequest 发送 HTTP 请求。将 [YOUR_PROJECT_ID] 替换为您的 Google Cloud 项目 ID:
(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' `
    -Headers @{"content-type"="application/json"} -URI `
     "https://[YOUR_PROJECT_ID].appspot.com/_ah/api/echo/v1/echo").Content
在上面的示例中,前两行以反引号结束。将示例粘贴到 PowerShell 中时,请确保反引号后面没有空格。 如需了解示例请求中使用的选项,请参阅 Microsoft 文档中的 Invoke-WebRequest。
第三方应用
您可以使用第三方应用(如 Chrome 浏览器扩展程序 Postman)发送请求:
API 会回显您向其发送的消息,并以如下内容作为响应:
{
 "message": "hello world"
}
如果未成功收到响应,请参阅排查响应错误。
跟踪 API 活动
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
后续步骤
- 了解 Endpoints Frameworks 架构。
- 了解如何创建 API。
- 了解如何创建 Web 服务器,以便为您的 API 提供服务。
- 了解如何使用其他路径提供 API。
- 了解如何监控您的 API。
- 了解如何使用 API 密钥限制访问权限。
- 了解如何配置自定义域名。
- 了解如何处理 API 版本控制。
- 了解支持选项。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-10-22。