Juneau comes with three basic marshaller types for serializing and parsing Header, Query, Form, and Path parts:
- {@link oaj.httppart.HttpPartSerializer}
- {@link oaj.httppart.SimplePartSerializer} - Serializes directly to strings.
- {@link oaj.uon.UonSerializer} - Serializes to UON notation.
- {@link oaj.oapi.OpenApiSerializer} - Serializes using Open-API schema rules.
- {@link oaj.httppart.HttpPartParser}
- {@link oaj.httppart.SimplePartParser} - Parses directly from strings.
- {@link oaj.uon.UonParser} - Parses from UON notation.
- {@link oaj.oapi.OpenApiParser} - Parses using Open-API schema rules.
By default, the REST API uses the OpenAPI serializer and parser which allows for schema-based
marshalling. You also have the option to use UON marshalling which is schema-less but allows
for JSON-equivalent data structures (object/array/primitives/...) using URL-encoding notation.
This can be done by overriding the part marshallers through the following APIs:
- {@link oajr.annotation.Rest}
- {@link oajr.annotation.Rest#partSerializer() partSerializer}
- {@link oajr.annotation.Rest#partParser() partParser}
- {@link oajr.RestContext.Builder}
- {@link oajr.RestContext.Builder#partSerializer(HttpPartSerializer) partSerializer(HttpPartSerializer)}
- {@link oajr.RestContext.Builder#partParser(HttpPartParser) partParser(HttpPartParser)}
The OpenAPI marshallers themselves also have the ability to support UON notation for individual
parts via the schema itself:
| @Query(..., schema=@Schema(format="uon")) Map<Integer,MyBean> myMap