本页面介绍了如何在 Cloud Endpoints Frameworks 中为 API 配置配额。如需概括了解配额提供的功能,请参阅配额简介。
Java
以下过程假设您已经:
- 为 API 编写代码并添加了注释。
- 添加 API 管理。
- 部署 API。
- 将 API 配置为使用 API 密钥。如此,Endpoints Frameworks 才能识别与调用应用关联的 Google Cloud 项目。如需了解详情,请参阅共享受 API 密钥保护的 API。
要配置 API 配额,请执行以下操作:
在包含 API 专用注释的文件中,将以下内容添加到 @Api 注释中:
limitDefinitions = { @ApiLimitMetric( name = "YOUR_METRIC_NAME", displayName = "YOUR_METRIC_DISPLAY_NAME", limit = YOUR_QUOTA_LIMIT) }
- 将
YOUR_METRIC_NAME
替换为描述 API 请求计数器的名称。 - 将
YOUR_METRIC_DISPLAY_NAME
替换为 Endpoints > 服务 > 配额页面上显示的文本,以用于标识配额。 将
YOUR_QUOTA_LIMIT
替换为一个整数值。 这是与使用方的 Google Cloud 项目关联的应用可在一分钟内发出的请求数。例如:@Api( name = "echo", version = "v1", namespace = @ApiNamespace( ownerDomain = "echo.example.com", ownerName = "echo.example.com", packagePath = "" ), limitDefinitions = { @ApiLimitMetric( name = "read-requests", displayName = "Read requests", limit = 1000), @ApiLimitMetric( name = "list-requests", displayName = "List requests", limit = 100), @ApiLimitMetric( name = "write-requests", displayName = "Write requests", limit = 50), } )
- 将
对于您要应用配额的每种方法,将以下内容添加到
@ApiMethod
注释:metricCosts = { @ApiMetricCost( name ="YOUR_METRIC_NAME", cost = YOUR_COST) }
- 将
YOUR_METRIC_NAME
替换为您在@Api
注释的limitDefinitions
参数中指定的名称。 将
YOUR_COST
替换为一个整数值,以用于指定每个请求的费用。例如:
@ApiMethod(name = "echo", metricCosts = { @ApiMetricCost( name = "read-requests", cost = 1) }) public Message echo(Message message, @Named("n") @Nullable Integer n) { // ...function code here... }
- 将
要详细了解配额中使用的注释,请参阅以下内容:
Python
以下过程假设您已经:
- 安装 2.4.5 或更高版本的 Endpoints Frameworks 库。
- 创建 API。
- 创建网络服务器。
- 添加 API 管理。
- 部署 API。
- 将 API 配置为使用 API 密钥。如此,Endpoints Frameworks 才能识别与调用应用关联的 Google Cloud 项目。如需了解详情,请参阅共享受 API 密钥保护的 API。
要配置 API 配额,请执行以下操作:
在包含 API 修饰器的文件中,创建一个类似如下形式的
LimitDefinition
实例列表:quota_limits = [ endpoints.LimitDefinition( "YOUR_METRIC_NAME", "YOUR_METRIC_DISPLAY_NAME", limit) ]
- 将
YOUR_METRIC_NAME
替换为用于描述 API 请求计数器的名称。 - 将
YOUR_METRIC_DISPLAY_NAME
替换为 Endpoints > 服务 > 配额页面上显示的文本,以用于标识配额。 将
limit
替换为一个整数值。这是与使用方的 Google Cloud 项目关联的应用可在一分钟内发出的请求数。例如:quota_limits = [ endpoints.LimitDefinition('read-requests', 'Read Requests', 1000), endpoints.LimitDefinition('list-requests', 'List Requests', 100), endpoints.LimitDefinition('write-requests', 'Write Requests', 50), ]
- 将
向 API 修饰器添加配额(只需将该配额分配给
limit_definitions
参数即可)。例如:@endpoints.api(name='bookstore', version='v1', limit_definitions=quota_limits)
针对您要应用配额的每种方法,为方法修饰器的
METRIC_COSTS
参数分配一个字典。键必须是您在 API 修饰器的limit_definitions
参数中指定的名称,而值是用于指定每个请求的费用的整数。例如:@endpoints.method(path='shelves/{shelf}', http_method='GET', metric_costs={'read-requests': 1}) def get_shelf(self, request): # ...function code here...
要详细了解配额中使用的修饰器,请参阅以下内容: