Configurar quotas

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á:

Para configurar quotas na sua API:

  1. 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),
            }
        )
      
  2. 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âmetro limitDefinitions 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...
        }
      
  3. Implemente a API.

Consulte o seguinte para mais informações sobre as anotações usadas nas quotas:

Python

O procedimento seguinte pressupõe que já:

Para configurar quotas na sua API:

  1. 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),
        ]
      
  2. 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)
    
  3. 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...
    
  4. Implemente a API.

Consulte o seguinte para mais informações sobre os decoradores usados nas quotas: