synapsecns/sanguine

View on GitHub
core/ginhelper/README.md

Summary

Maintainability
Test Coverage
# Gin Helper

Note: gindump utilities are courtesy of [this repo](https://github.com/tpkeeper/gin-dump) and have only been updated/modified here because of dependency issues.
<!--TODO: document non gindump deps-->

* Gin middleware/handler to dump header/body of request and response .

* Very helpful for debugging your applications.

* More beautiful output than httputil.DumpXXX()

## Content-type support / todo

* [x] application/json
* [x] application/x-www-form-urlencoded
* [ ] text/xml
* [ ] application/xml
* [ ] text/plain

## Usage

All:

```go
func main() {
    router := gin.Default()

    //use Dump() default will print on stdout
    router.Use(gindump.Dump())

    //or use DumpWithOptions() with more options
    router.Use(gindump.DumpWithOptions(true, true, false, true, false, func(dumpStr string) {
        fmt.Println(dumpStr)
    }))

    router.Post("/",myHandler)

    ...

    router.Run()
}
```

Group:

```go
func main() {
    router := gin.Default()

    dumpGroup := router.Group("/group")

    //use Dump() default will print on stdout
    dumpGroup.Use(gindump.Dump())

    //or use DumpWithOptions() with more options
    dumpGroup.Use(gindump.DumpWithOptions(true, true, false, true, false, func(dumpStr string) {
        fmt.Println(dumpStr)
    }))

    dumpGroup.Post("/",myHandler)

    ...

    router.Run()
}

```

EndPoint:

```go
func main() {
    router := gin.Default()

    //use Dump() default will print on stdout
    router.Post("/",gindump.Dump(),myHandler)

    //or use DumpWithOptions() with more options
    router.Post("/",gindump.DumpWithOptions(true, true, false, true, false, func(dumpStr string) {
        fmt.Println(dumpStr)
    }),myHandler)

    ...

    router.Run()
}
```


### Output is as follows

```sh
[GIN-dump]:
Request-Header:
{
    "Content-Type": [
        "application/x-www-form-urlencoded"
    ]
}
Request-Body:
{
    "bar": [
        "baz"
    ],
    "foo": [
        "bar",
        "bar2"
    ]
}
Response-Header:
{
    "Content-Type": [
        "application/json; charset=utf-8"
    ]
}
Response-Body:
{
    "data": {
        "addr": "tpkeeper@qq.com",
        "name": "jfise"
    },
    "ok": true
}
```