Highlights 🔥
A lot of work has been done in this January. We now support Gin and Echo! A demo video is incoming, but you can easily plug and play Fuego with your existing app. Examples are ready (gin, echo) and the documentation is available. As opposed to Huma, Fuego support Gin & Echo route Grouping ! The only limitation is that fuego does not handle pure Gin/Echo middlewares, but that's a work in progress. Thanks @genslein for the Echo support.
- We added support for generic return type.
- We support tags in nested structs, thank you @dylanhitt for this one.
- Global Middlewares, applicable even on non-matching routes (useful for CORS OPTIONS routes), are replacing the unique Cors Middleware we had.
- We now provide a framework-agnostic mock context for testing your business logic instead of HTTP bindings, by @olisaagbafor.
Thank you everyone for contributing ! 🎉
Special thanks to @dylanhitt and @ccoVeille for their dedication and proofreading a lot of PRs this month! ❤️
What's coming up for v0.19 👀
We're preparing strongly typed params support! We'll be waiting for go1.24 to be release and get widely adopted because we'll need generic type aliases.
See the milestone for more details.
What's Changed
- Generic route registration by @EwenQuim in #304
- chore: fix examples/gin-compat module pathing by @dylanhitt in #305
- chore: use for pretty printing rather than literal tab by @dylanhitt in #307
- Transform and Validate Gin input by @EwenQuim in #311
- re-implementing default logging middleware by @jwtly10 in #313
- fix: nested struct tags should be respected in openapi spec by @dylanhitt in #319
- chore: make petstore example it's own module by @dylanhitt in #323
- chore: issue 321 (Wrap Errors where applicable) by @ZwangaMukwevho in #331
- BREAKING: create generic engine.OutputOpenAPISpec for use in all engines by @dylanhitt in #302
- Customizable net.Listener for advanced use cases, such as tunneling by @Ignaciojeria in #245
- Optimize memory usage by reordering fields by @EwenQuim in #299
- Fixes generic return type support by @EwenQuim in #338
- feat: add disable error handler as engine option by @rizerkrof in #342
- Fix return type in
echo
function to match expected string type by @onionj in #346 - chore: test Flow for edge cases cause by misconfigs by @dylanhitt in #336
- Gin supports default status code by @EwenQuim in #348
- fix: NewRoute/NewBaseRoute to take engine not just OpeAPI for accepted content types by @dylanhitt in #334
- Global middlewares by @EwenQuim in #345
- feat: add fuegoecho alpha for #260 #304 parity by @genslein in #327
- golangci party by @ccoVeille in #364
- Default status code for echo by @EwenQuim in #355
- format Markdown fenced code blocks with mdsf by @ccoVeille in #373
- Documentation + example for echo compatibility #361 by @danielrobotz in #374
- Created simple crud api with gorm by @sonkeydotcom in #372
- added function in openapi3.operation by @TheRanomial in #370
- Use an interface for the echo router in the fuegoecho package by @EwenQuim in #362
- Common OpenAPI serving pattern through OpenAPIServable interface by @dylanhitt in #344
- feat: add framework-agnostic mock context for testing by @olisaagbafor in #351
- fix: allow to return nil from custom error handler by @martinvibes in #382
- feat: implement OpenAPIServable for echo adaptor by @dylanhitt in #378
- Path param int deserialization by @thezbm in #381
- Removes hardcoded Accept header from registerFuegoController by @EwenQuim in #380
New Contributors
- @jwtly10 made their first contribution in #313
- @ZwangaMukwevho made their first contribution in #331
- @Ignaciojeria made their first contribution in #245
- @onionj made their first contribution in #346
- @genslein made their first contribution in #327
- @danielrobotz made their first contribution in #374
- @sonkeydotcom made their first contribution in #372
- @TheRanomial made their first contribution in #370
- @olisaagbafor made their first contribution in #351
- @martinvibes made their first contribution in #382
- @thezbm made their first contribution in #381
Full Changelog: v0.17.0...v0.18.0