Cloud Endpoints Frameworks 提供的 API 管理功能可与 Extensible Service Proxy (ESP) 为 Cloud Endpoints 提供的功能相媲美。Endpoints Frameworks 内置了一个 API 网关,该网关会拦截所有请求并执行所有必要的检查(例如身份验证),然后将请求转发到 API 后端。当后端响应时,Endpoints Frameworks 会收集遥测数据并进行报告。您可以在Google Cloud 控制台中的 Endpoints > Services 页面上查看 API 的指标。
Endpoints Frameworks 中提供了以下 API 管理功能:
要将您的 API 交给 Endpoints 来管理,您必须根据 2.0 版 OpenAPI 规范部署一个用于描述您的 API 的 OpenAPI 文档。 本页面介绍如何生成和部署 OpenAPI 文档,以借助 Endpoints 来管理您的 API。
如果您未添加 API 管理功能,您的 API 仍会处理请求,但它不会显示在Google Cloud 控制台的 Endpoints > Services 页面上,并且 Endpoints 提供的功能(例如日志记录、监控和设置配额)也不可用。
安装和配置所需的软件
如果您还没有安装和配置 Python 版 Google Cloud CLI,也没有将 Endpoints Frameworks Python 库添加到您的 API 项目目录中,以便在部署时将该库随 API 代码一起上传,请执行这些操作
安装并配置 Python 版 gcloud CLI
- 安装并初始化 gcloud CLI: 
- 安装包含 App Engine Python 扩展程序的 - gcloud组件:- gcloud components install app-engine-python
- 更新 gcloud CLI: - gcloud components update
- 确保 gcloud CLI 有权访问您在 Google Cloud上的数据和服务: - gcloud auth login- 您的浏览器会打开一个新标签页,并提示您选择一个账号。 
- 将默认项目设置为您的项目 ID。将 - YOUR_PROJECT_ID替换为您的 Google Cloud 项目 ID。- gcloud config set project YOUR_PROJECT_ID 
- 对于 Linux,将 - ENDPOINTS_GAE_SDK环境变量设置为您的 App Engine SDK 文件夹路径:- PATH_TO_CLOUD_SDK/platform/google_appengine - 将 - PATH_TO_CLOUD_SDK替换为以下命令的输出:- gcloud info --format="value(installation.sdk_root)"
添加 Endpoints Frameworks Python 库
- 确保您可以编译适用于 Python 的 C 扩展程序。 - Windows:需要 Microsoft Visual C++ 9.0 或更高版本。您可以从 Microsoft 下载中心下载适用于 Python 的 Microsoft Visual C++ 编译器 2.7 版 
- 其他操作系统:根据您使用的操作系统,您可能需要安装编译器工具(有时包含在软件包 - build-essential中)和/或 Python 开发头文件(有时包含在软件包- python-dev中)。
 
- 将目录更改为 API 的主目录。 
- 在 API 的主目录中创建一个 - /lib子目录:- mkdir lib
- 安装库: - pip install -t lib google-endpoints --ignore-installed
生成 OpenAPI 文档
在 API 的主目录中,使用框架工具生成 OpenAPI 文档。例如:
单个类
在以下命令中,将 YOUR_PROJECT_ID 替换为您的 Google Cloud 项目 ID。
python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi \
    --hostname YOUR_PROJECT_ID.appspot.com
忽略显示的警告。
多个类
您可以使用命令行列出多个类。Endpoints 会为每个 API 名称/版本组合生成一个 OpenAPI 文档。
如果您想要将 API 名称不同的多个 API 类作为同一项服务的多个部分进行部署,则还必须添加 --x-google-api-name 标志。启用此标志会给您的 API 名称带来额外的限制。具体来说,名称必须与正则表达式 [a-z][a-z0-9]{0,39} 相匹配;也就是说,名称必须包含 1 至 40 个字符,这些字符可以全部为小写字母字符或数字,但第一个字符不能是数字。例如:
在以下命令中,将 YOUR_PROJECT_ID 替换为您的 Google Cloud 项目 ID。
python lib/endpoints/endpointscfg.py get_openapi_spec main.FooApi main.BarApi \ --hostname YOUR_PROJECT_ID.appspot.com \ --x-google-api-name
忽略显示的警告。
Endpoints 会使用您在 hostname 参数中指定的文本作为服务名称。将 API 部署到 App Engine 时,系统会自动创建名称格式为 YOUR_PROJECT_ID.appspot.com 的 DNS 条目。
部署 OpenAPI 文档
单个类
gcloud endpoints services deploy echov1openapi.json
多个类
如果您有多个 OpenAPI 文档,可使用命令行列出所有文档。 例如:
 gcloud endpoints services deploy foov1openapi.json barv1openapi.json
第一次部署一或多个 OpenAPI 文档时,系统将使用名称 YOUR_PROJECT_ID.appspot.com 创建一项新的 Endpoints 服务。
成功完成后,您会看到如下所示的行,其中显示了服务配置 ID 和服务名称:
Service Configuration 2017-02-13r0 uploaded for service example-project-12345.appspot.com
在上面的示例中,2017-02-13r0 是服务配置 ID。服务配置 ID 由日期戳后跟一个修订版本号组成。如果您再次部署 OpenAPI 文档,则服务配置 ID 中的修订号会递增。
如果您需要再次显示服务配置 ID,请运行以下命令,但需将 YOUR_PROJECT_ID 替换为您的 Google Cloud 项目的项目 ID:
gcloud endpoints configs list --service=YOUR_PROJECT_ID.appspot.com
您可以自定义 OpenAPI 文档并进行部署,而不使用生成的文档。只需将上述 echov1openapi.json 替换为 OpenAPI 文档的路径即可。如需详细了解如何编写 OpenAPI 文档,请参阅 OpenAPI 概览。
重新部署您的 API 并进行测试
- 按如下方式修改项目的文件 - app.yaml并添加- env_variables部分:- env_variables: ENDPOINTS_SERVICE_NAME: YOUR_PROJECT_ID.appspot.com ENDPOINTS_SERVICE_VERSION: YOUR_SERVICE_VERSION - 将 - YOUR_PROJECT_ID替换为您的Google Cloud 项目 ID,并将- YOUR_SERVICE_VERSION替换为上一部分中的服务配置 ID。将这些信息添加到- app.yaml文件后,Endpoints 便会在您重新部署应用后对 API 实施管理。
- 重新部署应用: - gcloud app deploy
- 等待部署成功完成,忽略警告消息。部署完成后,系统将显示如下所示的消息: - File upload done. Updating service [default]...done.
- 使用 curl 等命令测试重新部署操作是否成功: - curl --request POST \ --header "Content-Type: application/json" \ --data '{"content":"echo"}' \ https://YOUR_PROJECT_ID.appspot.com/_ah/api/echo/v1/echo?n=2- 将 - echo替换为您的 API 名称。- 结果应如下所示: - { "content": "echo echo" }
- 向您的 API 发出一些其他请求。 
- 如需查看 API 指标,请在 Google Cloud 控制台中打开项目的 Endpoints > Services 页面: