You can have shared flows perform boilerplate request pre-processing or response post-processing across a set of APIs. With a flow hook, you attach a shared flow so that it executes at the same place for all API proxies deployed to a specific environment. This gives you a separately implemented and deployed sequence of logic that is not part of a proxy's implementation code.
The following video demonstrates how to connect a shared flow to a flow hook, then race it, in the Classic Edge UI.
The following video demonstrates how to connect a shared flow to a flow hook, then trace it, in the New Edge experience UI.
A shared flow attached to a proxy via a flow hook provides a great place for logic that enforces broad policy requirements. For example, imagine that you have one team managing a single set of security requirements for multiple teams that represent different lines of businesses (LOBs). Each LOB team can develop APIs according to their own requirements, and without needing to account for the broader security requirements. The security team can implement those security requirements in a shared flow, then attach the flow to the Apigee Edge environment using a flow hook. Because the shared flow isn't part of proxy code, the security team can revise it as needed without interfering with LOB code.
Shared flows attached via flow hooks execute at that position for every API proxy deployed to the proxy hook's environment. For this reason, the ability to use flow hooks is available only to administrators of an Apigee Edge org.
For more about shared flows, see Reusable shared flows.
You attach a shared flow to a flow hook using the Apigee Edge management console. You can attach to flow hooks at the following places:
Pre-proxy Flow Hook for logic that needs to be enforced BEFORE a proxy endpoint
For example, you could have logic for enforcing security across all the APIs in an environment.
Pre-target Flow Hook for logic that needs to be enforced BEFORE a target endpoint
For example, you could implement logging before the request reaches the backend. You could also enforce mediation by removing certain fields from the request.
Post-target Flow Hook for logic that needs to be enforced AFTER the target response
This will be enforced right after the response comes back from the backend. You can use it to log the backend response or perform some mediation by removing sensitive fields from the backend response.
Post-proxy Flow Hook for logic that needs to be enforced AFTER the proxy endpoint and
right before the response is sent out to the client.
This could include some enforcement logic for CORS, logging the response, or performing some mashup or formatting.
Because code attached to a flow hook is outside the context of the API proxy core logic, some of its behavior differs from API proxies. Keep the following in mind:
- You must have permission to attach a shared flow to a flow hook. You must be an org admin.
- You can attach only one shared flow to each flow hook.
- You can attach the same shared flow to multiple flow hooks.
- If shared flow attached to a flow hook raises a fault or there are errors during shared flow execution, the message will be rejected and fault will be sent back to caller.
- If a message gets rejected during execution of a flow hook, details will be logged to analytics in the context of the called proxy. The shared flow can also throw a fault with a custom code and error message
Attaching a shared flow to a flow hook
To attach a shared flow to a flow hook, you must be an administrator in the organization containing the shared flow.
- In the Apigee Edge management console, select the organization containing your shared flow.
- Click the APIs > Environment Configuration menu.
- Click the Flow Hooks tab.
- In the list of flow hooks, locate the flow hook to which you want to attach the shared flow
based on where you want the shared flow to be executed.
Flow Hook Location Description Pre-proxy Flow Hook BEFORE a proxy endpoint executes Pre-target Flow Hook BEFORE a target endpoint executes Post-target Flow Hook AFTER the target response executes Post-proxy Flow Hook AFTER the proxy endpoint and right before the response is sent out to the client
- In the Shared Flow column, from the dropdown select the shared flow you want to
- Attach shared flows to other flow hooks as needed.
- Click Save.