What is api resources? How are api resources and api proxy related?

Hi I'm new about apigee edge. I'm confused about keywords between api resources and api proxy.

i think api resources is set of resource and api resources bundled in api product.

and api proxy have a set of resource and api proxy bundled in api product too.

so i think api resources and api proxy is the same thing.

8541-2.jpg

What is api resources? Resouce and api resources is the same thing? How are api resources and api proxy related?

Thank you.

Solved Solved
1 6 555
1 ACCEPTED SOLUTION

Let's take an example. Assume you have an endpoint(URL) which is used to handle all CRUD operations for employees data.

  • Within Apigee you can create an API Proxy using the Employee's Endpoint URL.
  • Once you create the proxy you want to do various calls to the endpoint like,
    • get employees data - GET HTTP method
    • create a new employee - POST
    • update employee details - PUT
    • delete the employee record - DELETE
  • For each of the above calls, you need to send unique requests to your endpoint, to do so we make use of API Resources in API Proxies.
  • We can create 4 API Resources like,
    • getEmployeesData
    • createNewEmployeeRecord
    • updateEmployeeDataById
    • deleteEmployeeDataById
  • Each API Resource can have multiple policies,
    • getEmployeesData
      • Quota Policy allowing 100 calls per minute for Platinum Users
      • Quota Policy allowing 10 calls per minute for Gold Users
    • createNewEmployeeRecord
      • Quota Policy allowing 100 calls per minute for Platinum Users
    • updateEmployeeDataById
      • Quota Policy allowing 100 calls per minute for Platinum Users
    • deleteEmployeeDataById
      • Quota Policy allowing 100 calls per minute for Platinum Users
  • Now you can have multiple Products in Apigee,
    • Platinum Product has a quota config of 100 calls per minute
      • You can map all 4 API Resource in this Product
  • Gold Product has a quota config of 10 calls per minute
    • You can map only getEmployeesData API Resource in this Product
  • In this way, developers who are assigned to the Gold Product can only make a GET call to only one API resource - getEmployeesData
  • API Resources are also called as Conditional Flows in APigee.

    API Resources/Conditional Flows are created inside an API Proxy.

    I have taken the example of one API Proxy with two Products. Similar to this you can have different API Resources from multiple Proxies used in a single Product like,

    API_Proxy_1 there are two resources(/foo1 and /bar1)

    API_Proxy_2 there is one resource (/foobar)

    You can have a,

    Product1 which can have /foo1 and /foobar API resources

    Product2 with only /bar1 API resource

    Watch this video for more explanation.

    View solution in original post

    6 REPLIES 6

    Let's take an example. Assume you have an endpoint(URL) which is used to handle all CRUD operations for employees data.

    • Within Apigee you can create an API Proxy using the Employee's Endpoint URL.
    • Once you create the proxy you want to do various calls to the endpoint like,
      • get employees data - GET HTTP method
      • create a new employee - POST
      • update employee details - PUT
      • delete the employee record - DELETE
    • For each of the above calls, you need to send unique requests to your endpoint, to do so we make use of API Resources in API Proxies.
    • We can create 4 API Resources like,
      • getEmployeesData
      • createNewEmployeeRecord
      • updateEmployeeDataById
      • deleteEmployeeDataById
    • Each API Resource can have multiple policies,
      • getEmployeesData
        • Quota Policy allowing 100 calls per minute for Platinum Users
        • Quota Policy allowing 10 calls per minute for Gold Users
      • createNewEmployeeRecord
        • Quota Policy allowing 100 calls per minute for Platinum Users
      • updateEmployeeDataById
        • Quota Policy allowing 100 calls per minute for Platinum Users
      • deleteEmployeeDataById
        • Quota Policy allowing 100 calls per minute for Platinum Users
    • Now you can have multiple Products in Apigee,
      • Platinum Product has a quota config of 100 calls per minute
        • You can map all 4 API Resource in this Product
    • Gold Product has a quota config of 10 calls per minute
      • You can map only getEmployeesData API Resource in this Product
  • In this way, developers who are assigned to the Gold Product can only make a GET call to only one API resource - getEmployeesData
  • API Resources are also called as Conditional Flows in APigee.

    API Resources/Conditional Flows are created inside an API Proxy.

    I have taken the example of one API Proxy with two Products. Similar to this you can have different API Resources from multiple Proxies used in a single Product like,

    API_Proxy_1 there are two resources(/foo1 and /bar1)

    API_Proxy_2 there is one resource (/foobar)

    You can have a,

    Product1 which can have /foo1 and /foobar API resources

    Product2 with only /bar1 API resource

    Watch this video for more explanation.

    Thank you for your explain.

    I have additional questions. for your example

    • Now you can have multiple Products in Apigee,
      • Platinum Product has a quota config of 100 calls per minute
        • You can map all 4 API Resource in this Product
    • Gold Product has a quota config of 10 calls per minute
      • You can map only getEmployeesData API Resource in this Product

    you said "You can map all 4 api resources to product. "

    Q1 : Why we map api resource into product. api resource is in api proxy. why not map api proxy into product? because I think api proxy is in api product.

    Q2 : From the picture What are api1-2-3? they are api proxy?

    for your example

    Similar to this you can have different API Resources from multiple Proxies used in a single Product like,

    API_Proxy_1 there are two resources(/foo1 and /bar1)

    API_Proxy_2 there is one resource (/foobar)

    You can have a,

    Product1 which can have /foo1 and /foobar API resources

    Product2 with only /bar1 API resource

    API_Proxy_1 = api1?

    Thank you

    Q2 : From the picture What are api1-2-3? they are api proxy?

    Yes, in the image api1 = apiproxy (API_Proxy_1 = api1)

    Q1 : Why we map api resource into product. 
    api resource is in api proxy. why not map api proxy into product? 
    because I think api proxy is in api product.

    We define multiple API Resources in API Proxies. In Products we define API Resources. By doing this, you can control control access to the API resources in an API product. For example, you can bundle api resources that can be accessed by internal developers only in one product and create another product for paying customers only.

    Assume there is only one proxy with 3 api resources(/foo, /bar, /foobar). Create a product(internalProduct) with all three resources for internal developers.

    For external customer you want to give access to only /foobar resource. In that case you can create another product(customerProduct) and only add /foobar resource.

    So now the credentials(API key and secret) of customerProduct will only have access to /foobar resource.

    Ok, That's clear. Thank you so much

    I have additional question.

    Q1 : 1 api proxy can have multiple api resources. Can 1 api resource use in multiple api proxy?

    Thank you.

    Generally speaking each API proxy has a unique TargetEndpoint(Backend), so each proxy will be having it's own API resources.

    Moreover each API Proxy has a unique /basepath, so you can also have same API Resources with same /uripaths in different proxies. There wont we any conflict.

    I would suggest you to do some poc's and play around with APigee to understand these concepts.

    If this answer helped you, click on Accept answer so that it helps others in the future.

    you mean Normally, each api proxy has a unique targetEndpoint (but i try to play. it can use same targetEndpoint in other api proxy), so each resources in one api proxy do some specific tasks.

    and can't use resource(/hotel/rooms) to other api proxy (/casino) because it does different task and use different targetEndpoint and it has different basepath. it's impossible to happen.

    Ex. api proxy1 = /hotel

    /hotel/rooms


    api proxy2 = /casino

    /casino/rooms


    but we can use same uri path (/rooms, /staff) in other api proxy like this.

    Ex. api proxy1 = /hotel

    /hotel/rooms --- resource

    /hotel/staff

    /hotel/reservation

    api proxy2 = /casino

    /casino/rooms --- resource

    /casino/staff

    /casino/games

    /casino/booking

    Am I thinking correct?

    If we can create api proxy with same targetEndpoint and /uripath but use different /basepath.

    Ex. /hotel/rooms

    /casino/rooms


    Q1 : Will two resources do the same task?

    Would it be possible to have this case?

    Thank you.