To achieve modularity and extensibility we depend on the Symfony bundle system which allows installing "extra parts" to an existing application server, like new API endpoints, new adapters to external systems, and so on.
The following graph shows a more technical overview of how a bundle integrates into the API gateway:
The core bundle provides various common functionality to all bundles and also allows bundles to extend the API gateway in various ways, so they can:
- use the logging system
- use the locking system
- register new API resources and expose the added API in the generated OpenAPI documentation
- register new health checks
- register new cron jobs
- register Symfony messages to be routed to the global worker queue
- register custom Symfony routes for special endpoints that don't fit the api-platform design
- register CLI commands accessible via the Symfony console
See Extending with Bundles for the different types of bundles and their use cases.