Get hands-on experience with 20+ free Google Cloud products and $300 in free credit for new customers.

Apigee X Target endpoints limit

Hi Team,
 
I have a requirement to create an Apigee API proxy for the below endpoints.
 
POST https://<host>/order-mgmt/orders
PUT https://<host>/order-mgmt/orders/{order-id}
DELETE https://<host>/order-mgmt/orders/{order-id}
GET https://<host>/order-mgmt/orders/{order-id}
 
I have listed one use case above for which I have created two endpoints, one endpoint for POST and a second endpoint for (GET, PUT, and DELETE), similarly, I have 500 use cases, which means 500*2(Target endpoints) then there will be more than 1000 endpoints.
 
Are there any limitations on the number of Apigee X target endpoints? 
 
are there any issues with the below approach accommodating all order functionalities in a single endpoint? I know ** means it can accept everything after orders and also it will be a little difficult to debug the issues. Please let me know your thoughts on this also is there any limitations on the number of target endpoints/
 
<Flow name="Orders">
 <Description/>
 <Request/>
 <Response/>
 <Condition>proxy.pathsuffix MatchesPath "/orders**</Condition>
</Flow>
 
<RouteRule name="Orders">
 <TargetEndpoint>Orders</TargetEndpoint>
 <Condition>proxy.pathsuffix MatchesPath "/orders**</Condition>
</RouteRule> 
 
Target endpoint:
 
<TargetEndpoint name="Orders">
     <PreFlow name="PreFlow">
        <Request>
            
        </Request>
        <Response/>
    </PreFlow>
    <Flows/>
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
    <HTTPTargetConnection>
        <LoadBalancer>
<Server name="ts-order-services"/>
</LoadBalancer>
<Path>/order-service/v1/{proxy.pathsuffix}</Path>         
    </HTTPTargetConnection>
</TargetEndpoint>
3 2 314
2 REPLIES 2

one endpoint for POST and a second endpoint for (GET, PUT, and DELETE),

Why would you do that? What problem are you trying to solve by separating them?

I have 500 use cases, which means 500*2(Target endpoints) then there will be more than 1000 endpoints.

Why would you do that?

It's not the case that an API proxy configured in Apigee must explicitly list all of the possible verb/path combinations, nor is it necessary to configure an explicit, specific TargetEndpoint for each possible upstream host you are intending to use. It's not required that you separate POST from GET/PUT/DELETE.

To support many many different targets, You can do something like this:

 

  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <Enforced>true</Enforced>
      <IgnoreValidationErrors>false</IgnoreValidationErrors>
    </SSLInfo>
    <Properties>
      <Property name="success.codes">1xx,2xx,3xx</Property>
    </Properties>
    <URL>https://{variable-holding-dynamically-set-hostname}/{variable-containing-path}</URL>
  </HTTPTargetConnection>

 

If I were you I would avoid creating more than o(10) TargetEndpoints in a single API proxy. That seems like too many to manage.

You might want to contract with an Apigee expert from a professional services firm to get some expert advice. It might save you a bunch of time and trouble.

@dchiesa1 thanks for your reply.

In our system, the host will be the same for all the endpoints,  for example, for all order-related APIs, the backend is Order Service and for item-related APIs then the backend is Item Service, the issue is how many API proxies need to be created for each use case(Order-mgmt, Item-mgmt, Reference-data, Merchandise, and etc...)

We are building a Merchandise management platform system where we have more than 500 use cases, each use case has to be exposed to an API to the front-end application. Due to limitations on the number of  Apigee proxies in the environment, only 50 API proxies can be created per environment. With this limitation in mind, I cannot create a single proxy for each endpoint, rather I would think of creating a single proxy for each functionality by that  I would create 40 + api proxies. 

Are there limitations on the number of Target endpoints per Apigee X environment? and also is there any problem if I use ** as below?

<Flow name="Orders">
 <Description/>
 <Request/>
 <Response/>
 <Condition>proxy.pathsuffix MatchesPath "/orders**</Condition>
</Flow>
 
Thanks
Venkat

Thanks

Venkat