选择 Endpoints 选项

如需将您的 API 交由 Cloud Endpoints 来管理,有三种选项供您选择,具体取决于您的 API 的托管位置以及 API 使用的通信协议类型:

本页面介绍了这些 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 Functions
Cloud Run
Cloud Run for Anthos
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 Functions 和 App Engine),ESPv2 部署为 Cloud Run 服务,作为远程代理管理无服务器平台应用。

部署 API 的后端代码后,ESP 或 ESPv2 会拦截所有请求并执行所有必要的检查(例如身份验证),然后再将请求转发到 API 后端。当后端响应时,ESP 会使用 Service Infrastructure 收集遥测数据并予以报告。

您可以在 Cloud Console 的 Endpoints 服务页面中,查看 API 的指标和指向 Google Cloud 运维套件日志和跟踪记录的链接。

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 Functions 不支持 gRPC API

gRPC 是一个可在任何环境中运行的远程过程调用 (RPC) 框架。使用 gRPC,客户端应用可以直接调用其他机器上的服务器应用中的方法,就如同它是本地对象一样。gRPC 的核心功能是采用基于 HTTP/2 的传输的双向流。

App Engine 和 Cloud Functions 不支持 HTTP/2。

Cloud Run 不支持 gRPC 流式传输

目前,Cloud Run 不支持对入站请求进行 gRPC 流式传输。由于此限制,适用于 gRPC 的 Cloud Run ESPv2 仅支持一元 gRPC API。

支持的编程语言

  • 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 框架(如 DjangoJersey)来实现 API。如果您不熟悉 OpenAPI 规范,请参阅 OpenAPI 概览

如需了解详情,请参阅适用于 OpenAPI 的 Endpoints

适用于 gRPC 的 Endpoints

对于 gRPC,您在 proto 文件中定义希望序列化的数据的结构,这是一个扩展名为 .proto 的普通文本文件。您还在 proto 文件中定义 API 的表面,并将 RPC 方法的参数和返回类型指定为协议缓冲区消息。如果您不熟悉 gRPC,请参阅 gRPC 文档中的 gRPC 简介

如需了解详情,请参阅适用于 gRPC 的 Endpoints

Endpoints Frameworks

Endpoints Frameworks 是一种网络框架,它适用于 App Engine 标准 Python 2.7 和 Java 8 运行时环境。您可以在源代码中添加元数据(借助 Java 中的注释或 Python 中的修饰器)。元数据用于描述应用的 REST API 的表面

如需了解详情,请参阅 Endpoints Frameworks

后续步骤