* ✨ v3: use any as default Message type of Error struct.
* ✨ v3: use any as default Message type of Error struct.
* ✨ v3: use any as default Message type of Error struct.
* ✨ v3: use any as default Message type of Error struct.
* Return an instance of `*fiber.Error` when no handler found
When a handler cannot be found for a given path, previously Fiber
would construct a plaintext response that cannot be modified.
This commit switches to returning a new instance of `*fiber.Error`
with identical error message so that users can customise the look
of their 404 pages.
Signed-off-by: AKP <tom@tdpain.net>
* Fix `Test_App_Next_Method`
This test was failing as the error returned by `c.Next()` that's
required to generate the correct 404 status code was not being
passed through the middleware and being silently ignored.
Signed-off-by: AKP <tom@tdpain.net>
* Fix `Test_Logger_All`
Signed-off-by: AKP <tom@tdpain.net>
* Fix `Test_Cache_WithHeadThenGet` test
As far as I can tell, this test is meant to check that a cached
HEAD request to a given endpoint does not return the cached
content to a GET request to the same endpoint, and the test has
been altered to correctly check for this.
Signed-off-by: AKP <tom@tdpain.net>
* Add initial support for hooks.
* release ctx, mutex.
* Add unit tests.
* add comment lines.
* update
* update
* remove unnecessary code.
* fix race condition.
* fix gosec.
* skip error handling for onshutdown and onresponse.
* update
* separate hooks from app.go
* make hooks field private, hook struct public and Hooks() func.
* remove onreq and onres because of they can be done by middlewares.
* OnGroupName method.
* Update hooks.go
Co-authored-by: hi019 <65871571+hi019@users.noreply.github.com>
* handle errors for name and groupname
* fix tests.
* Update app.go
* use struct fields instead of map
* add multi-handler.
* add onGroup, make prefix field public on Group struct.
* Update hooks.go
* add newhooks method.
* ✨ feature: add initial support for hooks
* remove ctx from hooks.
Co-authored-by: hi019 <65871571+hi019@users.noreply.github.com>
Co-authored-by: wernerr <rene@gofiber.io>
- Mounted fiber and its sub apps error handlers are now saved a new
errorHandlers map in App
- New public App.ErrorHandler method that wraps the logic for which
error handler to user on any given context
- Error handler match logic based on request path <=> prefix accuracy
- Typo fixes
- Tests
* simplify `u <= (1<<7)-1` to `u < (1 << 7)`
* It's not recommended to use `len` for empty string, we can check with string with ""
* It's not recommended to use `len` for empty string, we can check with string with ""
* It's not recommended to use `len` for empty string, we can check with string with ""
* It's not recommended to use `len` for empty string, we can check with string with ""
* Instead Bool comparison can using simplified bool check if !var = false checking
* Unnecessary use of fmt.Sprintf for value without format
* For check condition two value not required ! method
* nil check may not be enough for slice, better check with len
* function parameters combined
* When the form returns error information, the text content should not start with a capital letter or end with a punctuation mark
* error var invalidPath should have name of the form errFoo, It is recommended that the error variables that are part of an API should be named
* change to condition len(x), it's faster https://github.com/gofiber/fiber/pull/1386#discussion_r652369520
* Update write.go
* Update write_bytes.go
* Update store.go
Co-authored-by: RW <rene@gofiber.io>
Right now, each static request returns the file without any cache control
header. If you are using `app.Static` to serve your assets, the
browser shouldn't cache it. This PR introduces a way to set the cache
control header (if the file was found) on the file response to set a
custom max-age to e.g. cache it 1 year.
**🚀 Fiber `v1.9.6`**
Special thanks to @renanbastos93 & @renewerner87 for optimizing the current router.
Help use translate our API documentation by [clicking here](https://crowdin.com/project/gofiber)
🔥 New
- `AcquireCtx` / `ReleaseCtx`
The Ctx pool is now accessible for third-party packages
- Fiber docs merged [Russian](https://docs.gofiber.io/v/ru/) translations **84%**
- Fiber docs merged [Spanish](https://docs.gofiber.io/v/es/) translations **65%**
- Fiber docs merged [French](https://docs.gofiber.io/v/fr/) translations **40%**
- Fiber docs merged [German](https://docs.gofiber.io/v/de/) translations **32%**
- Fiber docs merged [Portuguese](https://docs.gofiber.io/v/pt/) translations **24%**
🩹 Fixes
- Hotfix for interpolated params in nested routes https://github.com/gofiber/fiber/issues/354
- Some `Ctx` methods didn't work correctly when called without an `*App` pointer.
- `ctx.Vary` sometimes added duplicates to the response header
- Improved router by ditching regexp and increased performance by **817%** without allocations.
```go
// Tested with 350 github API routes
Benchmark_Router_OLD-4 614 2467460 ns/op 68902 B/op 600 allocs/op
Benchmark_Router_NEW-4 3429 302033 ns/op 0 B/op 0 allocs/op
```
🧹 Updates
- Add context benchmarks
- Remove some unnecessary functions from `utils`
- Add router & param test cases
- Add new coffee supporters to readme
- Add third party middlewares to readme
- Add more comments to source code
- Cleanup some old helper functions
🧬 Middleware
- [gofiber/adaptor](https://github.com/gofiber/adaptor) `v0.0.1` Converter for net/http handlers to/from Fiber handlers
- [gofiber/session](https://github.com/gofiber/session) `v1.0.0` big improvements and support for storage providers
- [gofiber/logger](https://github.com/gofiber/logger) `v0.0.6` supports `${error}` param
- [gofiber/embed](https://github.com/gofiber/embed) `v0.0.9` minor improvements and support for directory browsing
Co-authored-by: ReneWerner87 <renewerner87@googlemail.com>
**🚀 Fiber `v1.9.6`**
The Ctx pool is now accessible for third-party packages
🔥 New
- `func AcquireCtx(fctx *fasthttp.RequestCtx) *Ctx`
- `func ReleaseCtx(ctx *Ctx)`
🩹 Fixes
- Some `Ctx` methods didn't work correctly when called without an `*App` pointer.
- `ctx.Vary` sometimes added duplicates to the response header
🧹 Updates
- Add context benchmarks
- Remove some unnecessary functions from `utils`
🧬 Middleware
- [gofiber/adaptor](https://github.com/gofiber/adaptor) `v0.0.1` Converter for net/http handlers to/from Fiber handlers