Alexander Pochill
7846e3fa6b
feat: Bind data using headers as source ( #1866 )
...
Currently, echo supports binding data from query, path or body.
Sometimes we need to read bind data from headers. It would be nice to
automatically bind those using the `bindData` func, which is already
well prepared to accept `http.Header`.
I didn't add this to the `Bind` func, so this will not happen
automatically. Main reason is backwards compatability. It might be
confusing if variables are bound from headers when upgrading, and might
even have become a security issue as pointed out in #1670 .
* Add docs for BindHeaders
* Add test for BindHeader with invalid data type
2021-05-25 14:50:49 +02:00
lipengwei
1aef300cf4
explicitly return an error instead of hiding it
2021-05-08 22:50:31 +03:00
lipengwei
18d7fe11df
Fix #1858 : Add query params binding support for anonymous struct pointer filed
2021-05-08 22:50:31 +03:00
Martti T
67f6346df2
Fix Bind() when target is array/slice and path/query params complain target not being struct ( #1835 )
...
For path/query params binding we do not try (silently return) to bind when target is not struct.
Recreates PR #1574 and fixes #1565
2021-04-06 09:05:33 +02:00
Martti T
02ed3f3126
Fix #1729 Binding query/path params and form fields to struct only works for explicit tags ( #1734 )
...
* Binding query/path params and form fields to struct only works for fields that have explicit TAG defined on struct
* remove unnecessary benchmark after change because it is not valid test anymore
2021-01-05 11:04:24 +01:00
toimtoimtoim
4d626c210d
c.Bind() uses query params only for GET or DELETE methods. This restores pre v.4.1.11 behavior.
2020-12-20 11:05:42 +02:00
toimtoimtoim
bd5810f5b5
separate methods to bind only query params, path params, request body
2020-12-13 11:19:05 +02:00
Eugene
399da56370
Improve bind performance ( #1469 )
...
* Improve bind performance
By some slight optimisations and lesser reflect usage now binding has significantly better performance:
name old time/op new time/op delta
BindbindData-8 21.2µs ± 2% 13.5µs ± 2% -36.66% (p=0.000 n=16+18)
BindbindDataWithTags-8 22.1µs ± 1% 16.4µs ± 2% -26.03% (p=0.000 n=20+20)
name old alloc/op new alloc/op delta
BindbindData-8 2.40kB ± 0% 1.33kB ± 0% -44.64% (p=0.000 n=20+20)
BindbindDataWithTags-8 2.31kB ± 0% 1.54kB ± 0% -33.19% (p=0.000 n=20+20)
name old allocs/op new allocs/op delta
BindbindData-8 297 ± 0% 122 ± 0% -58.92% (p=0.000 n=20+20)
BindbindDataWithTags-8 267 ± 0% 125 ± 0% -53.18% (p=0.000 n=20+20)
* Remove creation of new value in unmarshalFieldNonPtr
2020-01-08 13:40:52 -08:00
Vishal Rana
7c5e9ab0d9
Fixed #988
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2019-10-24 14:59:52 -07:00
Bob Hall
b129098169
dont return 400 for empty bodies ( #1410 )
...
* dont return 400 for empty bodies
* remove test for missing contentlength 0
2019-09-30 10:56:32 -07:00
Vishal Rana
9bf857f14c
Nil check for bind #988
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2019-07-14 22:39:07 -07:00
Vishal Rana
da45981491
Fixed #988
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2019-07-14 21:35:59 -07:00
Vishal Rana
8fb7b5be27
Closes #1353
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2019-06-27 10:52:17 -07:00
kolaente
858270f6f5
Added feature to map url params to a struct with the default binder ( #1165 )
...
* Added feature to map url params to a struct with the default binder
* Added test for mix of POST data and bound params
* Renamed variables
* Added error check
* Removed unneded fix
2019-06-21 06:12:55 -07:00
Garrett D'Amore
c824b8ddc3
Add support for encoding.TextUnmarshaler in bind. ( #1314 )
2019-06-09 09:39:54 -07:00
Evgeniy Kulikov
282a44d4ad
Remove unreachable code ( #1254 )
...
`if` <-> `else if` <-> `else` has `return` and after `else` was `return`
2019-01-28 07:59:36 -08:00
Emir Ribić
c8fd197fa8
Replace http constants with stdlib ones, i.e.: http.MethodGet instead of echo.GET ( #1205 )
2018-10-14 20:46:58 +05:30
Thuc Le
f7470482fe
Support internal error when Bind() data #888 ( #1164 )
2018-09-28 10:41:13 -07:00
Emir Ribić
688ab2bec6
Remove unecessery if-s and else-s ( #1189 )
2018-09-07 07:58:04 -07:00
Brandon Hansen
6007218835
case sensitive matching prioritized
2018-07-03 13:04:50 -07:00
Brandon Hansen
01cfe83efe
Enable case insensitive query param matching
...
Unmarshalling body params with json.Unmarshal supports case-insensitive
matching against struct tags. Matching query params case insensitive
provides a more sane and consistent experience for API consumers.
The original url.Values keys remain case sensitive.
2018-07-03 13:04:50 -07:00
AnuchitO
d36ff72961
Add field name in Error message when Binding type mismatch
...
Old error message
`
Unmarshal type error: expected=int, got=string, offset=47
`
New error message
`
Unmarshal type error: expected=int, got=string, field=age, offset=47
`
Make it easy to fix for client.
2018-05-01 06:51:22 -07:00
Evgeniy Kulikov
f49d166e6f
[FIX] Cleanup code ( #1061 )
...
Code cleanup
2018-02-21 10:44:17 -08:00
Vishal Rana
70c18060bd
Fixed #988 , Closed #989
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2017-08-14 21:48:19 -07:00
Vishal Rana
2b6ea65ccd
Removed duplicated code in binder
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2017-08-03 07:52:47 -07:00
Vishal Rana
b42edd791f
Closes #980
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2017-08-02 23:16:11 -07:00
Guilherme Oenning
f8c3008787
Request: New bind property for route parameters ( #973 )
...
* bind route params
* rename to bindPathData
2017-07-25 07:22:19 -07:00
Christopher Probst
f3f3e99ba3
Add pointer binding of proper types to DefaultBinder ( #915 )
2017-04-28 11:07:20 -07:00
Vishal Rana
a216a9319a
Bind DELETE params too
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2017-03-31 21:39:18 -07:00
Vishal Rana
42e83ed0b9
Handle GET request with body
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2017-03-11 22:42:24 -08:00
Vishal Rana
b218599906
Fixed #864 ( #865 )
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2017-02-28 12:04:29 -08:00
Jonathan Hall
ed7353cf60
Fix binding of untagged struct fields ( #812 )
...
* Add failing test
A BindUnmarshaler struct with no tag is not decoded properly.
* Fix binding of untagged structs
2017-01-15 23:13:46 -08:00
Vishal Rana
412823eabb
Added key auth middleware
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2017-01-02 20:12:06 -08:00
Jonathan Hall
9cdc439f34
Support BindUnmarshaler for basic types ( #786 )
...
* Add a failing test for #784
* Change ordering of unmarshaler, to handle BindUnmarshalers first
* Add test for arrays of BindUnmarshalers
2016-12-23 10:01:42 -08:00
Vishal Rana
d9a6052c67
Closes #489 , Closes #781 , Updated docs
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2016-12-20 23:13:46 -08:00
Vishal Rana
c848119eef
fixed #763
...
Signed-off-by: Vishal Rana <vr@labstack.com>
2016-12-15 11:08:56 -08:00