Configuring quotas

This page describes how to configure quotas for your API in Cloud Endpoints Frameworks. For an overview of the functionality provided by quotas, see About quotas .

Java

The following procedure assumes that you have already:

To configure quotas on your API:

  1. In the file that contains the API-scoped annotations , add the following to your @Api annotation:

    limitDefinitions = {
          @ApiLimitMetric(
            name = " YOUR_METRIC_NAME 
    ",
            displayName = " YOUR_METRIC_DISPLAY_NAME 
    ",
            limit = YOUR_QUOTA_LIMIT 
    )
    }
    • Replace YOUR_METRIC_NAME with a name that describes the API requests counter.
    • Replace YOUR_METRIC_DISPLAY_NAME with the text that is displayed on Endpoints> Services> Quotaspage to identify the quota.
    • Replace YOUR_QUOTA_LIMIT with an integer value. This is the number of requests that an application associated with a consumer's Google Cloud project can make in a minute. For example:

         
       @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. For each method that you want to apply a quota to, add the following to the @ApiMethod annotation:

    metricCosts = {
                 @ApiMetricCost(
                   name =" YOUR_METRIC_NAME 
    ",
                   cost = YOUR_COST 
    )
    }
    • Replace YOUR_METRIC_NAME with a name that you specified in the limitDefinitions parameter in the @Api annotation.
    • Replace YOUR_COST with an integer value that specifies the cost for each request.

      For example:

         
       @ApiMethod 
       ( 
       name 
        
       = 
        
       "echo" 
       , 
        
       metricCosts 
        
       = 
        
       { 
        
       @ApiMetricCost 
       ( 
        
       name 
        
       = 
        
       "read-requests" 
       , 
        
       cost 
        
       = 
        
       1 
       ) 
        
       }) 
        
       public 
        
       Message 
        
       echo 
       ( 
       Message 
        
       message 
       , 
        
       @Named 
       ( 
       "n" 
       ) 
        
       @Nullable 
        
       Integer 
        
       n 
       ) 
        
       { 
        
       // ...function code here... 
        
       } 
       
      
  3. Deploy the API .

See the following for more information on the annotations used in quotas:

Python

The following procedure assumes that you have already:

To configure quotas on your API:

  1. In the file that contains the API decorator , create a list of LimitDefinition instances, similar to the following:

    quota_limits = [
      endpoints.LimitDefinition(
        " YOUR_METRIC_NAME 
    ",
        " YOUR_METRIC_DISPLAY_NAME 
    ",
        limit)
    ]
    • Replace YOUR_METRIC_NAME with a name that describes the API requests counter.
    • Replace YOUR_METRIC_DISPLAY_NAME with the text that is displayed on Endpoints> Services> Quotaspage to identify the quota.
    • Replace limit with an integer value. This is the number of requests that an application associated with a consumer's Google Cloud project can make in a minute. For example:

        quota_limits 
       = 
       [ 
       endpoints 
       . 
       LimitDefinition 
       ( 
       'read-requests' 
       , 
       'Read Requests' 
       , 
       1000 
       ), 
       endpoints 
       . 
       LimitDefinition 
       ( 
       'list-requests' 
       , 
       'List Requests' 
       , 
       100 
       ), 
       endpoints 
       . 
       LimitDefinition 
       ( 
       'write-requests' 
       , 
       'Write Requests' 
       , 
       50 
       ), 
       ] 
       
      
  2. Add your quota to the API decorator by assigning it to the limit_definitions argument. For example:

      @endpoints 
     . 
     api 
     ( 
     name 
     = 
     'bookstore' 
     , 
     version 
     = 
     'v1' 
     , 
     limit_definitions 
     = 
     quota_limits 
     ) 
     
    
  3. For each method that you want to apply a quota to, assign a dictionary to the METRIC_COSTS argument of the method decorator . The key must be a name that you specified in the limit_definitions argument to the API decorator, and the value is an integer that specifies the cost for each request. For example:

      @endpoints 
     . 
     method 
     ( 
     path 
     = 
     'shelves/ 
     {shelf} 
     ' 
     , 
     http_method 
     = 
     'GET' 
     , 
     metric_costs 
     = 
     { 
     'read-requests' 
     : 
     1 
     }) 
     def 
      
     get_shelf 
     ( 
     self 
     , 
     request 
     ): 
     # ...function code here... 
     
    
  4. Deploy the API .

See the following for more information on the decorators used in quotas:

Design a Mobile Site
View Site in Mobile | Classic
Share by: