Summary
The main features in this release:
- content negotiation support on server & client side
- data structure is reflected only in schemas, not in validators. Validators are much simpler now
- server interpreters are rewritten, and support two types of interceptors (request & endpoint interceptors). Some functionalities (logging, decode failure handling) are implemented as interceptors
- exceptions are handled and result in the 500 status code
Breaking changes
DecodeFailureHandler
- minor changes in method signatures, the default one is nowDefaultDecodeFailureHandler.handler
LogRequestHandling
->ServerLog
- server options have been significantly refactored. To create custom options, use e.g.
AkkaServerOptions.customInterceptors
- there's no single
streamBody
method, instead there arestreamBinaryBody
,streamTextBody
,streamListBody
,streamIterableBody
SchemaType
s are not objects, but classes. If you specified the schema type manually, instead of e.g.SchemaType.SString
you'll have to useSchemaType.SString()
- rewritten
SchemaType.[SProduct|SCoproduct|SOpenProduct]
Codec
is no longer aMapping
Validator.enum
->Validator.derivedEnum
- akka server interpreter: removal of
.toDirective
- play server interpreter:
toRoute
->toRoutes
- deprecated
statusMapping
in favor ofoneOfMapping
What’s Changed
- Rename statusMapping to oneOfMapping, docs (#1120) @adamw
- Implement request interceptors (#1118) @adamw
- Interceptors content negotiation (#1078) @kubinio123
- Add exception interceptors (#1109) @adamw
- [Minor] Add convenience method for empty outputs (#1106) @Qthunder
- feature: implement http4s client interpreter (#1080) @MichalPawlicki
- Move validation logic to schemas. Only schemas have structure, not validators (#1105) @adamw
- Yaml test cleanup (#1101) @kubinio123
- Implements #1065: Interceptors (#1089) @adamw
- Update derevo integration; (#1086) @FunFunFine
Dependency updates
- Update refined to 0.9.22 (#1114) @scala-steward
- Update cats-core, cats-laws to 2.5.0 (#1115) @scala-steward
- Update cats-effect to 2.4.1 (#1116) @scala-steward
- Update zio-interop-cats to 2.4.0.0 (#1112) @scala-steward
- Update mdoc_2.12, sbt-mdoc to 2.2.19 (#1113) @scala-steward
- Update http4s-blaze-server, http4s-circe, ... to 0.21.21 (#1110) @scala-steward
- Update cats-effect to 2.4.0 (#1095) @scala-steward
- Update jsoniter-scala-core, ... to 2.7.0 (#1108) @scala-steward
- Update upickle to 1.3.9 (#1103) @scala-steward
- Update client3:akka-http-backend, ... to 3.2.0 (#1102) @scala-steward
- Update scala-logging to 3.9.3 (#1098) @scala-steward
- Update upickle to 1.3.8 (#1094) @scala-steward
- Update sbt-twirl to 1.5.1 (#1093) @scala-steward
- Update derevo-core to 0.12.2 (#1092) @scala-steward
- Update tagging to 2.3.0 (#1090) @scala-steward
- Update play-ahc-ws-standalone to 2.1.3 (#1091) @scala-steward
- Update upickle to 1.3.7 (#1088) @scala-steward
- Update client3:akka-http-backend, ... to 3.1.9 (#1087) @scala-steward
- Update upickle to 1.3.4 (#1085) @scala-steward