【问题标题】:Go Lang - Gin : How to extract only the body (and ignore other garbage) from httputil.DumpRequestGo Lang - Gin:如何从 httputil.DumpRequest 中仅提取主体(并忽略其他垃圾)
【发布时间】:2015-08-17 04:22:12
【问题描述】:

我知道你可以从

获取正文内容
ioutil.ReadAll(c.Request.Body)

但是使用 httputil.DumpRequest

dump, err := httputil.DumpRequest(c.Request, true)

将正文内容与其他值一起给出,最后是正文内容。

内容类型:application/json IP:127.0.0.1:36846 标头令牌:内容长度:76 请求方法:POST 请求 URL:/signup 正文: 发布/注册 HTTP/1.1 主机:127.0.0.1:8080 接受:/ 接受编码:gzip,deflate 接受语言:en-US,en;q=0.8 连接:保持活动 内容类型:应用程序/json 来源:chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo 用户代理:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36 {"fname":"aFirstName", "lname":"aLName", "email":"test@test.com", "password":"123"}

有没有一种有效的方法可以只从 httputil.DumpRequest() 获取正文内容?即仅在这种情况下

{"fname":"aFirstName", "lname":"aLName", "email":"test@test.com", "password":"123"}

【问题讨论】:

  • 如果您上一个问题的答案不正确,请不要复制问题,而是在此处评论答案和/或编辑问题。
  • 这是an X/Y question,当您应该执行X(复制io.ReadCloser)时,您正在询问如何执行Y(调试函数的输出)。这个问题的答案是“你不知道”。
  • @dave-c,我不认为这是重复的,因为另一个问题是如何“保留”身体。在这里,我试图忽略垃圾并只提取我需要的东西。我是围棋的初学者。非常感谢任何帮助。谢谢。
  • 严格来说它不是重复的;然而,这个问题的存在只是因为对另一个问题的回答不佳(并且密切的原因是有限的)。这不是任何人都应该做的事情。不要使用不合适的调试功能。

标签: go


【解决方案1】:

您不要为此使用httputil.DumpRequest,这是一个调试功能。

假设你想解析 json,你可以这样做:

defer c.Request.Body.Close()
var data yourDataType
if err := json.NewDecoder(c.Request.Body).Decode(&data); err != nil {
    // handle error
}
// handle data

【讨论】:

    猜你喜欢
    • 2017-08-15
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多