Esta página descreve como configurar quotas para a sua API nos Cloud Endpoints Frameworks. Para uma vista geral da funcionalidade fornecida pelas cotas, consulte o artigo Acerca das cotas.
Java
O procedimento seguinte pressupõe que já:
- Escreveu e anotou o código para a sua API.
- Gestão de APIs adicionada.
- Implementou a sua API.
- Configurou a sua API para usar uma chave da API. Isto é necessário para que os Frameworks de Endpoints possam identificar oGoogle Cloud projeto ao qual a aplicação de chamada está associada. Consulte o artigo Partilhar APIs protegidas por chave da API para mais informações.
Para configurar quotas na sua API:
No ficheiro que contém as anotações ao nível da API, adicione o seguinte à anotação @Api:
limitDefinitions = { @ApiLimitMetric( name = "YOUR_METRIC_NAME", displayName = "YOUR_METRIC_DISPLAY_NAME", limit = YOUR_QUOTA_LIMIT) }
- Substitua
YOUR_METRIC_NAME
por um nome que descreva o contador de pedidos de API. - Substitua
YOUR_METRIC_DISPLAY_NAME
pelo texto apresentado na página Endpoints > Serviços > Quotas para identificar a quota. Substitua
YOUR_QUOTA_LIMIT
por um valor inteiro. Este é o número de pedidos que uma aplicação associada ao projeto de um consumidor pode fazer num minuto. Google Cloud Por exemplo:@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), } )
- Substitua
Para cada método ao qual quer aplicar uma quota, adicione o seguinte à anotação
@ApiMethod
:metricCosts = { @ApiMetricCost( name ="YOUR_METRIC_NAME", cost = YOUR_COST) }
- Substitua
YOUR_METRIC_NAME
por um nome que especificou no parâmetrolimitDefinitions
na anotação@Api
. Substitua
YOUR_COST
por um valor inteiro que especifica o custo de cada pedido.Por exemplo:
@ApiMethod(name = "echo", metricCosts = { @ApiMetricCost( name = "read-requests", cost = 1) }) public Message echo(Message message, @Named("n") @Nullable Integer n) { // ...function code here... }
- Substitua
Consulte o seguinte para mais informações sobre as anotações usadas nas quotas:
Python
O procedimento seguinte pressupõe que já:
- Ter instalada a versão 2.4.5 ou posterior da biblioteca Endpoints Frameworks.
- Criou a sua API.
- Criou um servidor Web.
- Gestão de APIs adicionada.
- Implementou a sua API.
- Configurou a sua API para usar uma chave da API. Isto é necessário para que os Frameworks de Endpoints possam identificar oGoogle Cloud projeto ao qual a aplicação de chamada está associada. Consulte o artigo Partilhar APIs protegidas por chave da API para mais informações.
Para configurar quotas na sua API:
No ficheiro que contém o decorador da API, crie uma lista de instâncias
LimitDefinition
, semelhante à seguinte:quota_limits = [ endpoints.LimitDefinition( "YOUR_METRIC_NAME", "YOUR_METRIC_DISPLAY_NAME", limit) ]
- Substitua
YOUR_METRIC_NAME
por um nome que descreva o contador de pedidos da API. - Substitua
YOUR_METRIC_DISPLAY_NAME
pelo texto apresentado na página Endpoints > Serviços > Quotas para identificar a quota. Substitua
limit
por um valor inteiro. Este é o número de pedidos que uma aplicação associada ao projeto de um consumidor Google Cloud pode fazer num minuto. Por exemplo:quota_limits = [ endpoints.LimitDefinition('read-requests', 'Read Requests', 1000), endpoints.LimitDefinition('list-requests', 'List Requests', 100), endpoints.LimitDefinition('write-requests', 'Write Requests', 50), ]
- Substitua
Adicione a sua quota ao decorador da API atribuindo-a ao argumento
limit_definitions
. Por exemplo:@endpoints.api(name='bookstore', version='v1', limit_definitions=quota_limits)
Para cada método ao qual quer aplicar uma quota, atribua um dicionário ao argumento
METRIC_COSTS
do decorador de método. A chave tem de ser um nome que especificou no argumento do decorador da API, e o valor é um número inteiro que especifica o custo de cada pedido.limit_definitions
Por exemplo:@endpoints.method(path='shelves/{shelf}', http_method='GET', metric_costs={'read-requests': 1}) def get_shelf(self, request): # ...function code here...
Consulte o seguinte para mais informações sobre os decoradores usados nas quotas: