I have a header is coming with the signature of the body, and that body is a JSON, I need read the body in a middleware, and then I need to use the body inside of endpoint to manage the request, my question is, how I can get the body two times, or if I can't, how I can solve my issue

That's related to this issue https://github.com/gin-gonic/gin/issues/439 but nothing here is util for this case

Comment From: jefer94

Also you need to take in consideration than not exists one way of check the signature of a request without read the body from middleware

Comment From: rnotorni

How about saving the body using Context.Set and retrieving it with Context.Get?

Comment From: jefer94

Let me try this solution, this also works, but in my personal opinion can't revert a reader is not natural, I shouldn't replace the original object in c.Request.Body

        var body interface{}
    contents, _ := ioutil.ReadAll(c.Request.Body)
    c.Request.Body = ioutil.NopCloser(bytes.NewReader(contents))
    json.Unmarshal(contents, &body)

Comment From: sjy3

in the latest version , gin support func ShouldBindBodyWith to get the body repeatedly , so if you need read the body in a middleware, and then use the body inside of endpoint to manage the request,you can use c.ShouldBindBodyWith(&body, binding.JSON) to replace the c.BindJSON(&body).

Comment From: jefer94

That solution does not work with gqlgen