An icing on top of the Symfony serializer cake
A mostly opinionated bundle which aims to ease creation of efficient API servers with the Symfony serializer, while trying to stay lightweight.
- Make sure you have a Symfony 3.* or 4.* project, with the Serializer component, and the Doctrine ORM ;
composer require exsyst/normalizer-extra-bundlein your project ;
- Add a section to your project configuration to choose the features you want to use (see below) ;
- Further customize and/or extend the bundle's behavior if you want (documentation will come later) ;
- Start (de)serializing things!
The only features that are enabled by default are the ones that :
- Are inert on their own, or ;
- Define a reasonable, unopinionated behavior for cases that were completely unsupported.
exsyst_normalizer_extra: features: # Makes $request->request able to access the request body in the # Content-Type: application/json case. Enabled by default. json_request_parser: true # Parses a JSON document in a header named "Response-Shape", # into a request attribute named "shape". Enabled by default. response_shape_header: true # Allows a controller to return an object or null and have it # automatically turned into a Response. Disabled by default. serializer_view_listener: false # Allows a controller to throw a HttpException and have it # automatically turned into a Response. Disabled by default. serializer_exception_listener: false normalizers: # A normalizer geared towards Doctrine collections, which also # supports most iterables (though in a limited way). # Disabled by default. collection: false # A meta-normalizer that can generate fast normalizers for most # classes, and delegate to them. Disabled by default. specializing: false options: # Always use a breadth-first normalization algorithm, that can # optimize initialization operations by batching them. # Some normalizers may be incompatible. Disabled by default. implicit_breadth_first: false # Automatically provides metadata consumers with information # obtained by using Symfony's PropertyInfo component and serializer # metadata, Doctrine's mappings, and annotations. Enabled by default. auto_metadata: true unsafe_features: # Optimizes Doctrine collection initializations by batching them. # Disabled by default. collection_batching: false # Optimizes Doctrine entity proxy initializations by batching them. # Disabled by default. entity_batching: false