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 ;
- Run
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, application/xml, application/x-yaml,# text/csv cases and/or others depending on serializer support.# Enabled by default.request_decoder: true# Parses a JSON document in a header named "Response-Shape",# into a request attribute named "shape", used so that the client# can filter out unneeded fields.# 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: falsenormalizers:
# A normalizer geared towards Doctrine collections, which also# supports most iterables (though in a limited way).# Disabled by default.collection: false# A normalizer for PHP 8.1+ enums. It will normalize backed enum# cases into their values, and unit enum cases into their names.# Disabled by default.enum: false# A meta-normalizer that can generate fast normalizers for most# classes, and delegate to them.# Disabled by default.specializing: falseoptions:
# 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# When using the breadth-first normalization algorithm (see above),# only normalize each object once in each normalized graph.# An object that appears at several places will have its extra# properties merged into the first normalized instance, and the# other instances will be replaced by stubs.# Disabled by default.implicit_merge_objects: false# Automatically provides metadata consumers with information# obtained by using Symfony's PropertyInfo component and serializer# metadata, Doctrine's mappings, and attributes.# Enabled by default.auto_metadata: true# Parameters to use in the (de)serialization context of the services# defined by enabling the above features.# Null by default, which is treated the same as an empty mapping.default_context: ~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