mirror of
https://github.com/gin-gonic/gin.git
synced 2026-06-06 20:18:19 +08:00
Merge e83cdcc9e463ec5d582123e34ecb602a3b46c6c5 into d75fcd4c9ab260e5225de590f1f0f8c0e0e12d11
This commit is contained in:
commit
02cad2b8d0
@ -967,6 +967,11 @@ func (c *Context) ShouldBindBodyWithPlain(obj any) error {
|
|||||||
return c.ShouldBindBodyWith(obj, binding.Plain)
|
return c.ShouldBindBodyWith(obj, binding.Plain)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ShouldBindBodyWithProtoBuf is a shortcut for c.ShouldBindBodyWith(obj, binding.ProtoBuf).
|
||||||
|
func (c *Context) ShouldBindBodyWithProtoBuf(obj any) error {
|
||||||
|
return c.ShouldBindBodyWith(obj, binding.ProtoBuf)
|
||||||
|
}
|
||||||
|
|
||||||
// ClientIP implements one best effort algorithm to return the real client IP.
|
// ClientIP implements one best effort algorithm to return the real client IP.
|
||||||
// It calls c.RemoteIP() under the hood, to check if the remote IP is a trusted proxy or not.
|
// It calls c.RemoteIP() under the hood, to check if the remote IP is a trusted proxy or not.
|
||||||
// If it is it will then try to parse the headers defined in Engine.RemoteIPHeaders (defaulting to [X-Forwarded-For, X-Real-IP]).
|
// If it is it will then try to parse the headers defined in Engine.RemoteIPHeaders (defaulting to [X-Forwarded-For, X-Real-IP]).
|
||||||
|
|||||||
@ -2917,6 +2917,21 @@ func TestContextShouldBindBodyWithPlain(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestContextShouldBindBodyWithProtoBuf(t *testing.T) {
|
||||||
|
label := "FOO"
|
||||||
|
protoBody, err := proto.Marshal(&testdata.Test{Label: &label})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
c, _ := CreateTestContext(w)
|
||||||
|
c.Request = httptest.NewRequest(http.MethodPost, "/", bytes.NewReader(protoBody))
|
||||||
|
|
||||||
|
obj := testdata.Test{}
|
||||||
|
require.NoError(t, c.ShouldBindBodyWithProtoBuf(&obj))
|
||||||
|
require.NotNil(t, obj.Label)
|
||||||
|
assert.Equal(t, "FOO", *obj.Label)
|
||||||
|
}
|
||||||
|
|
||||||
func TestContextGolangContext(t *testing.T) {
|
func TestContextGolangContext(t *testing.T) {
|
||||||
c, _ := CreateTestContext(httptest.NewRecorder())
|
c, _ := CreateTestContext(httptest.NewRecorder())
|
||||||
c.Request, _ = http.NewRequest(http.MethodPost, "/", strings.NewReader(`{"foo":"bar", "bar":"foo"}`))
|
c.Request, _ = http.NewRequest(http.MethodPost, "/", strings.NewReader(`{"foo":"bar", "bar":"foo"}`))
|
||||||
|
|||||||
@ -1576,6 +1576,7 @@ For this, you can use `c.ShouldBindBodyWith` or shortcuts.
|
|||||||
- `c.ShouldBindBodyWithXML` is a shortcut for c.ShouldBindBodyWith(obj, binding.XML).
|
- `c.ShouldBindBodyWithXML` is a shortcut for c.ShouldBindBodyWith(obj, binding.XML).
|
||||||
- `c.ShouldBindBodyWithYAML` is a shortcut for c.ShouldBindBodyWith(obj, binding.YAML).
|
- `c.ShouldBindBodyWithYAML` is a shortcut for c.ShouldBindBodyWith(obj, binding.YAML).
|
||||||
- `c.ShouldBindBodyWithTOML` is a shortcut for c.ShouldBindBodyWith(obj, binding.TOML).
|
- `c.ShouldBindBodyWithTOML` is a shortcut for c.ShouldBindBodyWith(obj, binding.TOML).
|
||||||
|
- `c.ShouldBindBodyWithProtoBuf` is a shortcut for c.ShouldBindBodyWith(obj, binding.ProtoBuf).
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func SomeHandler(c *gin.Context) {
|
func SomeHandler(c *gin.Context) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user