Nesta página, você aprende a configurar cotas da API no Cloud Endpoints Frameworks. Para uma visão geral da funcionalidade fornecida pelas cotas, consulte Sobre cotas.
Java
Para o procedimento a seguir, presume-se que você já:
- escreveu e anotou o código da API;
- adicionou o gerenciamento de API;
- implantou a API;
- Configurar a API para usar uma chave de API. Assim, o Endpoints Frameworks identifica o projeto do Google Cloud a que o aplicativo de chamada está associado. Para mais informações, consulte Como compartilhar APIs protegidas por chaves.
Para configurar cotas na API:
No arquivo que contém as anotações com escopo 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 solicitações da API. - Substitua
YOUR_METRIC_DISPLAY_NAME
pelo texto exibido na página Endpoints > Serviços > Cotas para identificar a cota. Substitua
YOUR_QUOTA_LIMIT
por um valor inteiro. Esse é o número de solicitações que um aplicativo associado ao projeto do Google Cloud de um cliente pode fazer em um minuto. 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 em que você quer aplicar uma cota, adicione o seguinte à anotação
@ApiMethod
:metricCosts = { @ApiMetricCost( name ="YOUR_METRIC_NAME", cost = YOUR_COST) }
- Substitua
YOUR_METRIC_NAME
por um nome que você especificou no parâmetrolimitDefinitions
na anotação@Api
. Substitua
YOUR_COST
por um valor inteiro que especifica o custo de cada solicitação.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 os links a seguir para mais informações sobre as anotações usadas nas cotas:
Python
Para o procedimento a seguir, presume-se que você já:
- tenha instalado a versão 2.4.5 ou posterior da biblioteca do Endpoints Frameworks;
- criou sua API;
- criou um servidor da Web;
- adicionou gerenciamento de API;
- implantou a API;
- Configurar a API para usar uma chave de API. Assim, o Endpoints Frameworks identifica o projeto do Google Cloud a que o aplicativo de chamada está associado. Para mais informações, consulte Como compartilhar APIs protegidas por chaves.
Siga estas etapas para configurar cotas na API:
No arquivo que contém o decorador da API, crie uma lista de instâncias
LimitDefinition
como esta:quota_limits = [ endpoints.LimitDefinition( "YOUR_METRIC_NAME", "YOUR_METRIC_DISPLAY_NAME", limit) ]
- Substitua
YOUR_METRIC_NAME
por um nome que descreva o contador de solicitações da API. - Substitua
YOUR_METRIC_DISPLAY_NAME
pelo texto exibido na página Endpoints > Serviços > Cotas para identificar a cota. Substitua
limit
por um valor inteiro. Esse é o número de solicitações que um aplicativo associado ao projeto do Google Cloud de um cliente pode fazer em um 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 sua cota ao decorador da API, atribuindo-a ao argumento
limit_definitions
. Exemplo:@endpoints.api(name='bookstore', version='v1', limit_definitions=quota_limits)
Para cada método em que você quer aplicar uma cota, atribua um dicionário ao argumento
METRIC_COSTS
do decorador do método. A chave precisa ser um nome que você especificou no argumentolimit_definitions
para o decorador da API, e o valor é um número inteiro que determina o custo de cada solicitação. Exemplo:@endpoints.method(path='shelves/{shelf}', http_method='GET', metric_costs={'read-requests': 1}) def get_shelf(self, request): # ...function code here...
Consulte os links a seguir para mais informações sobre os decoradores usados nas cotas: