1
0
mirror of https://github.com/gofiber/fiber.git synced 2025-05-31 11:52:41 +00:00
Commit Graph

13 Commits

Author SHA1 Message Date
Edvard
71820292b6
🔥 feat: Add All method to Bind ()
* feat: Add All method to Bind

This commit introduces a new `All` method to the `Bind` struct, enabling the binding of request data from multiple sources (URI parameters, body, query parameters, headers, and cookies) into a single struct.

The `All` method iterates through the available binding sources, applying them in a predefined precedence order. It merges the values from each source into the output struct, only updating fields that are currently unset.

Changes:

- Added `All` method to `Bind` struct.
- Added `mergeStruct` helper function to merge struct values.
- Added `isZero` helper function to check if a value is zero.
- Added a test case for the `All` method in `bind_test.go` to validate its functionality.

* feat: Enhance Bind.All with comprehensive testing and configuration

The changes include:

- Added `RequestConfig` struct to encapsulate request configuration (ContentType, Body, Headers, Cookies, Query).
- Implemented `ApplyTo` method on `RequestConfig` to apply the configuration to the context.
- Created multiple test cases for `Bind.All` covering successful binding, missing fields, overriding query parameters, and form binding.
- Added a test case `Test_Bind_All_Uri_Precedence` to validate the precedence of URI parameters.
- Added benchmark test `BenchmarkBind_All` to measure the performance of the `Bind.All` method.
- Refactored the `TestBind_All` to use the new `RequestConfig` and assertion libraries.

* fix: Correct form binding in Test_Bind_All

* refactor: Improve Bind.All test and struct field ordering

- Reordered fields in `RequestConfig` and `User` structs for field alignment
- Updated `Test_Bind_All` to use `require.NoError` for more robust error checking.
- Corrected header key casing in `Test_Bind_All` to `X-User-Role` to match the struct tag.
- Added `t.Parallel()` to the test function to enable parallel test execution.

* feat: Document Bind.All function in API documentation

This commit adds documentation for the `Bind.All` function to the API documentation.

The documentation includes:

- A description of the function's purpose and precedence order for binding data from different sources (URI, body, query, headers, cookies).

* docs: lint Bind.All documentation

* fix: Update parameter tags from 'param' to 'uri' in bind_test.go

* fix: Update parameter tags from 'param' to 'uri' in bind.md

* test: Replace assert with require in bind_test.go

* feat: Add support for unified binding with defined precedence order in whats_new.md

---------

Co-authored-by: RW <rene@gofiber.io>
2025-05-14 15:56:39 +02:00
M. Efe Çetin
57744ebbe8
🐛 bug: fix EnableSplittingOnParsers is not functional ()
* 🐛 bug: fix EnableSplittingOnParsers is not functional

* remove wrong testcase

* add support for external xml decoders

* improve test coverage

* fix linter

* update

* add reset methods

* improve test coverage

* merge Form and MultipartForm methods

* fix linter

* split reset and putting steps

* fix linter
2024-12-25 12:53:14 +01:00
Sumit Kumar
26cc477500
🔥 feat: Add support for CBOR encoding ()
* feat(cbor): allow encoding response bodies in cbor

* fix(tests::cbor): encode struct instead of a randomly ordered hashmap

* docs(whats_new): add cbor in context section

* feat(binder): introduce CBOR

* feat(client): allow cbor in fiber client

* chore(tests): add more test

* chore(packages): go mod tidy

* fix(binder): update CBOR name and test

* improve test coverage

* improve test coverage

* update1

* add docs

* doc fixes

* update

* Fix markdown lint

* Add missing entry from binder README

* add/refresh documentation

---------

Co-authored-by: Juan Calderon-Perez <835733+gaby@users.noreply.github.com>
Co-authored-by: M. Efe Çetin <efectn@protonmail.com>
Co-authored-by: RW <rene@gofiber.io>
2024-12-01 11:03:50 +01:00
ItsMeSamey
f08ebf4335
🐛 fix: Nil pointer dereference with Must Bind binding ()
* Fix nil pointer dereference with Must Bind binding error

if err is nil err.Error() panics
(eg. c.Bind().Must().JSON(...) successfully binds but panics

* Added returnErr test

make sure returnErr works with nil error

* Reordered returnErr nil check

as in majority of cases we expect err to be nil, this should provide better short-cutting

* Use require.NoError

* Update bind_test.go

* Renamed Must to WithAutoHandling

* Update bind.md

Added a requested clarification

* renamed Should to WithoutAutoHandling and Bind.should to Bind.dontHandle

* renamed dontHandle to dontHandleErrs

* fixed formatting

* fixed a typo

* Update binder documentation

---------

Co-authored-by: Juan Calderon-Perez <835733+gaby@users.noreply.github.com>
2024-11-25 11:51:36 +01:00
Juan Calderon-Perez
16f9056f5f
🐛 fix: Improve naming convention for Context returning functions ()
* Rename UserContext() to Context(). Rename Context() to RequestCtx()

* Update Ctxt docs and What's new

* Remove extra blank lines

---------

Co-authored-by: M. Efe Çetin <efectn@protonmail.com>
2024-11-13 16:12:19 +01:00
Muhamad Surya Iksanudin
2eba89aadc
docs: Fix typo on comment ()
fix typo
2024-10-07 22:23:23 +02:00
RW
077968abec
[v3 Maintenance]: Consolidate and Document Core Changes in v3 ()
* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3

* [v3 Maintenance]: Consolidate and Document Core Changes in v3
2024-04-23 08:18:19 +02:00
nickajacks1
92dd8d6917
🎨 Style: Add inamedparam linter ()
inamedparam enforces that parameters in interface definitions be named.
This is important for clarity so that users and implementers can easily
understand the purpose of each parameter.
2024-02-10 22:36:49 +01:00
Muhammed Efe Çetin
c2749c36c2
👷 v3 (ci): fix some linter warnings 2023-02-09 22:33:45 +03:00
Kris Carr
f26d9b1d4e
v3 (deps): update to use gofiber/utils/v2 () 2022-10-31 16:44:53 +03:00
Muhammed Efe Çetin
ca6f25a890
v3 (deps): move utils to https://github.com/gofiber/utils 2022-09-23 21:19:44 +03:00
M. Efe Çetin
406ab3177f
v3: fix undefined function 2022-08-08 10:21:51 +03:00
M. Efe Çetin
eacde70294
v3 (feature): initial support for binding ()
*  v3 (feature): initial support for binding

*  v3 (feature): initial support for binding 
use pointer/references instead of copies

*  v3 (feature): initial support for binding
embed bind into the ctx

*  v3 (feature): initial support for binding
- add URI binder.

*  v3 (feature): initial support for binding
- add response header binder.

*  v3 (feature): initial support for binding
- add response header binder.

*  v3 (feature): initial support for binding
- add cookie binder.

*  v3 (feature): initial support for binding
- custom binder support for body binding.
- test case for custom binder.

*  v3 (feature): initial support for binding
- add map[string][]string & map[string]string support for binders.

*  v3 (feature): initial support for binding
- fix Test_Bind_Header_Map

*  v3 (feature): initial support for binding
- Functional Should/Must

*  v3 (feature): initial support for binding
- custom struct validator support.

*  v3 (feature): initial support for binding
- README for binding.
- Docs for binding methods.

*  v3 (feature): initial support for binding
- Bind() -> BindVars(), Binding() -> Bind()

*  v3 (feature): initial support for binding
- fix doc problems

*  v3 (feature): initial support for binding
- fix doc problems

Co-authored-by: wernerr <rene@gofiber.io>
2022-08-08 09:16:08 +02:00