wizards/rest-bundle
A Symfony bundle for quickly building RESTful APIs, with helpers for resource exposure, serialization, pagination, filtering, and consistent JSON responses.
composer require wizards/rest-bundle. The last tagged release is January 2021, so check the composer.json constraints against your PHP/Symfony version before committing. On Symfony 5.4+ this usually installs cleanly; on PHP 8.2+ expect deprecation noise and possibly a fork.config/bundles.php (Wizards\RestBundle\WizardsRestBundle::class => ['all' => true]) and import its routing. Look at the package's Resources/config/ directory first — that is where the routing file, service definitions, and default configuration live, and it tells you more than the README.bin/console config:dump-reference wizards_rest (or whatever the bundle alias is — confirm in the DI extension class) to see what is actually configurable in your installed version rather than trusting docs written for an older tag.bin/console debug:container --tag=... and debug:router are your fastest way to see which generic controllers, listeners, and normalizers the bundle registered. This bundle is largely "wiring plus conventions," so the service graph is the documentation.A realistic day-one goal is replacing a hand-rolled EntityController with the bundle's generic CRUD for one resource, not migrating your whole API.
access_control rules on the generated routes and use voters for row-level checks. The generic controllers are hard to decorate per-action, so authorization belongs in Symfony Security./api/v1/...) in your routing import, not via bundle config.ContainerAwareCommand-era code. Run the test suite and a smoke request against every generated route after any Symfony minor upgrade.page, limit, sort), and error envelopes are fixed by the bundle. If your clients expect different shapes, adapt at the gateway/proxy or override the normalizer — do not assume there is a config key for it.debug:router first — the bundle's routing import is easy to mis-scope. When a response is empty, check serializer groups and whether the entity was actually registered as a resource.MaxDepth or explicit groups and verify query counts with the profiler before shipping.config/, which silently break on upgrade.How can I help you explore Laravel packages today?