登录
首页 >  Golang >  Go问答

golang:如何删除请求正文中的空格和换行符

来源:stackoverflow

时间:2024-04-03 12:54:32 296浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《golang:如何删除请求正文中的空格和换行符》,聊聊,我们一起来看看吧!

问题内容

我使用gin框架编写了一个web服务(golang)来接收json正文格式的参数。我提出这样的请求:

curl --location 'http://foo.bar/test' \
--header 'content-type: application/json' \
--data'{
     "a": "1",
     "b": "2"
}'

现在,我添加了一个中间件,它将所有请求参数打印到日志文件中,该文件在控制器之上运行一层。注意,中间件层不知道参数的具体类型。当我读取正文并打印日志时,我得到以下结果:

[2023/06/20 11:44:38 cst] [info] (.../infra/log.info:18) request_in||traceid=xx||spanid=xxx||path=/test||body= {
     "a": "1",
     "b": "2"
}

我期望这样的事情:

[2023/06/20 11:44:38 CST] [INFO] (/infra/log.Info:18) request_in||traceid=xx||spanid=xxx||path=/test||body={"a ":"1","b":"2"}

请问:如何去掉正文中的空格和换行符?注意,这个例子中的body参数比较简单,但实际情况会更复杂。谢谢。


正确答案


您可以使用以下方法替换正文中的空格和换行符。

使用 strings.replaceall()

requestbodybytes, err := c.getrawdata()
if err != nil {
  // handle this
}

body := string(requestbodybytes)
body = strings.replaceall(body, "\n", "")
body = strings.replaceall(body, " ", "")

fmt.printf("body=%v \n", body)

当您需要通过在到达控制器之前删除空格和行来更改请求正文时,可以使用此方法。

使用编组

requestBodyBytes, err := c.GetRawData()
if err != nil {
  // Handle this
}

var data interface{}
json.Unmarshal(requestBodyBytes, &data)

marshalledBytes, err := json.Marshal(data)
if err != nil {
  // Handle this
}
fmt.Printf("body=%v \n", string(marshalledBytes))

当您只需要删除空格和行以进行记录时,请使用此功能。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>