gin/binding
guonaihong f98b339b77 support bind http header param #1956 (#1957)
* support bind http header param #1956

update #1956
```
package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

type testHeader struct {
	Rate   int    `header:"Rate"`
	Domain string `header:"Domain"`
}

func main() {
	r := gin.Default()
	r.GET("/", func(c *gin.Context) {
		h := testHeader{}

		if err := c.ShouldBindHeader(&h); err != nil {
			c.JSON(200, err)
		}

		fmt.Printf("%#v\n", h)
		c.JSON(200, gin.H{"Rate": h.Rate, "Domain": h.Domain})
	})

	r.Run()

// client
// curl -H "rate:300" -H "domain:music" 127.0.0.1:8080/
// output
// {"Domain":"music","Rate":300}
}
```

* add unit test

* Modify the code to get the http header

When the http header is obtained in the standard library,
the key value will be modified by the CanonicalMIMEHeaderKey function,
and finally the value of the http header will be obtained from the map.
As follows.
```go
func (h MIMEHeader) Get(key string) string {
        // ...
         v := h[CanonicalMIMEHeaderKey(key)]
        // ...
}
```

This pr also follows this modification

* Thanks to vkd for suggestions, modifying code

* Increase test coverage

env GOPATH=`pwd` go test github.com/gin-gonic/gin/binding -coverprofile=cover.prof
ok  	github.com/gin-gonic/gin/binding	0.015s	coverage: 100.0% of statements

* Rollback check code

* add use case to README.md
2019-06-27 12:47:45 +08:00
..
binding_body_test.go Yaml binding (#1618) 2018-11-06 09:49:45 +08:00
binding_test.go support bind http header param #1956 (#1957) 2019-06-27 12:47:45 +08:00
binding.go support bind http header param #1956 (#1957) 2019-06-27 12:47:45 +08:00
default_validator.go update error(err) to err (#1416) 2018-07-01 21:10:48 +08:00
form_mapping_benchmark_test.go refactor(form_mapping.go): mapping ptr, struct and map (#1749) 2019-03-03 14:39:43 +08:00
form_mapping_test.go binding: move tests of mapping to separate test file (#1842) 2019-05-07 19:06:55 +08:00
form_mapping.go Some code improvements (#1909) 2019-05-21 23:08:52 +08:00
form.go binding: add support of multipart multi files (#1878) (#1949) 2019-06-18 19:49:10 +08:00
header.go support bind http header param #1956 (#1957) 2019-06-27 12:47:45 +08:00
json.go handle nil body for JSON binding (#1638) 2018-11-22 09:55:51 +08:00
msgpack.go Fix #216: Enable to call binding multiple times in some formats (#1341) 2018-05-11 10:33:33 +08:00
multipart_form_mapping_test.go binding: add support of multipart multi files (#1878) (#1949) 2019-06-18 19:49:10 +08:00
multipart_form_mapping.go binding: add support of multipart multi files (#1878) (#1949) 2019-06-18 19:49:10 +08:00
protobuf.go Fix typos (#1626) 2018-11-05 14:17:04 +08:00
query.go style(import): not use aliase when import package (#1146) 2017-10-29 13:12:22 +01:00
uri.go support bind uri param (#1612) 2018-11-22 09:29:48 +08:00
validate_test.go unify assert.Equal usage (#1327) 2018-04-20 10:27:44 +08:00
xml.go Fix #216: Enable to call binding multiple times in some formats (#1341) 2018-05-11 10:33:33 +08:00
yaml.go Yaml binding (#1618) 2018-11-06 09:49:45 +08:00