admin 管理员组文章数量: 887021
【Golang
引言
主要记录使用Golang实现一个POST请求所用到的小知识点
1、项目结构
客户端向服务端注册用户信息,服务端返回注册信息中的用户名
PS E:\goland-workspace\GolangLearning\http> tree /f
卷 文件 的文件夹 PATH 列表
卷序列号为 0C66-1433
E:.
├─client
│ client.go
│
└─serverserver.go
1.1 server端
package mainimport ("encoding/json""fmt""io/ioutil""net/http"
)// user结构体,用于保存request Body中json解码后的内容
type user struct {Name string
}func registe(w http.ResponseWriter, r *http.Request) {user1 := &user{}body, _ := ioutil.ReadAll(r.Body)json.Unmarshal(body, user1)fmt.Fprintf(w, "The name you submit is %s", user1.Name)
}func main() {http.HandleFunc("/register", registe)http.ListenAndServe(":8080", nil)
}
注:
func ReadAll(r io.Reader) ([]byte, error)
从r中读取所有数据,返回字节切片func Unmarshal(data []byte, v any) error
解析json编码的数据,保存到指针v
指向的值
1.2 Client端
package mainimport ("fmt""io/ioutil""net/http""strings"
)func main() {body := strings.NewReader(`{"name":"tian"}`)// body := strings.NewReader("{\"name\":\"tian\"}")req, _ := http.NewRequest("POST", "http://127.0.0.1:8080/register", body)res, _ := http.DefaultClient.Do(req)ret, _ := ioutil.ReadAll(res.Body)fmt.Println(string(ret))
}
注:
-
strings 库里的
func NewReader(s string) *Reader
(NewReader returns a new Reader reading from s)类似于bytes库里func NewBufferString(s string) *Buffer
和func NewReader(b []byte) *Reader
这里{"name":"tian"}
就是一段json格式的字符串,用反引号``括起来。当然也可以写成很麻烦的一种形式(body := strings.NewReader("{\"name\":\"tian\"}")
) -
func NewRequest(method, url string, body io.Reader) (*Request, error)
method方法会进行校验,常用的有GET,POST,PUT,DELETE
等;
url就是请求路径;
body指http报文负荷就是要传输的内容,其实现了io.Reader
,常见的有类型有*bytes.Buffer, *bytes.Reader, or *strings.Reader
2、运行
首先运行服务端,然后客户端发起请求,可以得到如下结果
本文标签: golang
版权声明:本文标题:【Golang 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1724405195h750116.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论