如需将您的 API 交由 Cloud Endpoints 来管理,有三种选项供您选择,具体取决于您的 API 的托管位置以及 API 使用的通信协议类型:
- 适用于 OpenAPI 的 Cloud Endpoints
- 适用于 gRPC 的 Cloud Endpoints
- 适用于 App Engine 标准环境的 Cloud Endpoints Frameworks
本页面介绍了这些 Endpoints 选项,以帮助您做出适当的选择。
选择计算选项
Endpoints 支持可托管 API 后端代码的各种 Google Cloud 计算选项。Endpoints 可与 Extensible Service Proxy (ESP) 或 Extensible Service Proxy V2 (ESPv2) 配合使用来提供 API 管理功能。下表汇总了支持的计算选项:
适用于 OpenAPI 的 ESP | 适用于 gRPC 的 ESP | 适用于 OpenAPI 的 ESPv2 | 适用于 gRPC 的 ESPv2 | Endpoints Frameworks | |
---|---|---|---|---|---|
App Engine 第 1 代标准环境 |
Java 8 和 Python 2.7 运行时 | ||||
App Engine 第 2 代标准环境 |
|||||
App Engine 柔性环境 |
|||||
Cloud Run functions | |||||
Cloud Run | |||||
Knative serving | |||||
Compute Engine | |||||
GKE | |||||
Kubernetes | |||||
其他非 Google Cloud 选项 |
如需了解 App Engine、GKE 和 Compute Engine 所提供功能的比较情况,请参阅选择计算选项。如果要使用 App Engine,您需要选择标准环境或柔性环境。如需了解这两种环境的比较情况,请参阅选择 App Engine 环境。
关于计算选项限制
适用于 OpenAPI 的 Endpoints 和适用于 gRPC 的 Endpoints 可以使用 ESP 或 ESPv2 作为代理。对于非无服务器平台,ESP 或 ESPv2 作为容器部署在应用的前面,或者部署为应用的 Sidecar。对于无服务器平台(例如 Cloud Run、Cloud Run 函数和 App Engine),ESPv2 部署为 Cloud Run 服务,作为远程代理管理无服务器平台应用。
部署 API 的后端代码后,ESP 或 ESPv2 会拦截所有请求并执行所有必要的检查(例如身份验证),然后再将请求转发到 API 后端。当后端响应时,ESP 会使用 Service Infrastructure 收集遥测数据并予以报告。
您可以在 Google Cloud 控制台的 Endpoints 服务页面中,查看 API 的指标和指向 Google Cloud Observability 日志和跟踪记录的链接。
App Engine 第 1 代标准环境限制
适用于 App Engine 第 1 代标准环境的 Endpoints 以往使用 Endpoints Frameworks,这种框架仅支持 Java 8 和 Python 2.7 运行时环境。
由于在开发 Endpoints Frameworks 时,App Engine 标准环境不支持多容器部署,因此,Endpoints Frameworks 未使用 ESP,而是内置了一个 API 网关,该网关提供的 API 管理功能相当于 ESP 为适用于 OpenAPI 的 Endpoints 和适用于 gRPC 的 Endpoints 提供的功能。
App Engine 或 Cloud Run functions 不支持 gRPC API
gRPC 是一个可在任何环境中运行的远程过程调用 (RPC) 框架。使用 gRPC,客户端应用可以直接调用其他机器上的服务器应用中的方法,就如同它是本地对象一样。gRPC 的核心功能是采用基于 HTTP/2 的传输的双向流。
App Engine 和 Cloud Run 函数不支持 HTTP/2。
支持的编程语言
- OpenAPI 规范是一种与语言无关的规范。您可以使用任何编程语言来实现您的 API。
- gRPC 提供了协议缓冲编译器
protoc
,适用于许多主流编程语言:C++、C#、Objective-C(对于 iOS)、Dart、Go、Java(包括对 Android 的支持)、Node.js、Python 和 Ruby。如需获取最新列表,请参阅 gRPC 常见问题解答。 - Endpoints Frameworks 仅支持 Java 8 和 Python 2.7。
描述您的 API
通过 Endpoints 选项,您可以不同方式来描述您的 API。
适用于 OpenAPI 的 Endpoints
OpenAPI Initiative 是一项业界共同努力的项目,旨在实现 REST API 的标准化描述。Endpoints 支持使用 OpenAPI 规范 2.0(以前称为 Swagger 规范)描述的 API。在 JSON 或 YAML 文件(也称为 OpenAPI 文档)中描述 API 的表面。您可以使用任何公开提供的 REST 框架(如 Django 或 Jersey)来实现 API。如果您不熟悉 OpenAPI 规范,请参阅 OpenAPI 概览。
如需了解详情,请参阅适用于 OpenAPI 的 Endpoints。
适用于 gRPC 的 Endpoints
对于 gRPC,您在 proto 文件中定义希望序列化的数据的结构,这是一个扩展名为 .proto
的普通文本文件。您还在 proto 文件中定义 API 的表面,并将 RPC 方法的参数和返回类型指定为协议缓冲区消息。如果您不熟悉 gRPC,请参阅 什么是 gRPC?。
如需了解详情,请参阅适用于 gRPC 的 Endpoints。
Endpoints Frameworks
Endpoints Frameworks 是一种网络框架,它适用于 App Engine 标准 Python 2.7 和 Java 8 运行时环境。您可以在源代码中添加元数据(借助 Java 中的注释或 Python 中的修饰器)。元数据用于描述应用的 REST API 的表面。
如需了解详情,请参阅 Endpoints Frameworks。
后续步骤
按照 Endpoints 快速入门操作,以了解 Endpoints 功能的实际效果,该快速入门介绍了如何使用脚本将示例 API 部署到 App Engine 柔性环境。
熟悉部署步骤,根据您选择的 Endpoints 选项学习以下教程之一:
如需详细了解 Endpoints 和 ESP,请参阅以下内容: