golang菜鸟教程_go语言入门

go (72) 2023-03-24 21:49

大家好,我是编程小6,很高兴遇见你,有问题可以及时留言哦。

Go标准库中的net/http提供了http服务器的方法。

从写一个最基本的HTTP服务器示例开始学习。

golang菜鸟教程_go语言入门_https://bianchenghao6.com/blog_go_第1张

代码解析:

3行:import "net/http",导入net/http包

14行:http.HandleFunc("/", HelloWorld)中,使用HandleFunc方法创建路由“/”,第二个参数是指定处理发送到路径“/”请求的相应函数

7行:func HelloWorld(w http.ResponseWriter, r *http.Request) {},定义了HelloWorld函数,接受http.ResponseWriter和*http.Request请求指针,这样就可以在这个函数中,*http.Request查看、操作请求,之后将http.ResponseWriter相应给浏览器。

8行:w.Write([]byte("hello golang web")),使用w的Write方法相应,生成的HTTP响应含有响应体、报头和状态(比如200,404等),[]byte("hello golang web")表示将字符串转成字节。

15行:http.ListenAndServe(":8080", nil),是为了响应客户端,用ListenAndServe启动服务器,同时监听localhost和端口8000

在浏览器中输入http://127.0.0.1:8080/,显示获取到的结果。

其他工具:

在做web开发的过程中,习惯用postman工具来做测试。

golang菜鸟教程_go语言入门_https://bianchenghao6.com/blog_go_第2张

路由响应:

golang菜鸟教程_go语言入门_https://bianchenghao6.com/blog_go_第3张

http.HandleFunc("/", HelloWorld),注册url地址并设置响应的函数,需要注意的是HelloWorld是作为参数传递的,而不是调用,因此不用加括号()。

注册路由的时候,是什么就在URL里写什么,必须要完整匹配,也就是说如果注册了/users/,那么URL写成/users,就不行。

响应函数

路由器将路由映射到响应函数,响应函数可以读写报头、查看请求类型、分析请求数据、验证身份、查看请求类型。

下面是一个修改了报头的相应的演示。

golang菜鸟教程_go语言入门_https://bianchenghao6.com/blog_go_第4张

golang菜鸟教程_go语言入门_https://bianchenghao6.com/blog_go_第5张

6行:w.Header().Set("from","toutiao GoPy"),设置了响应头

7行:首先设置响应头,然后设置返回值,这样是可以行得通,但是如果先设置了返回值,那么设置的响应头就是没有用的。

在浏览器中输入URL,打开“开发者工具”,可以看到响应头中有对应的值From: toutiao GoPy

设置报头

返回json格式

golang菜鸟教程_go语言入门_https://bianchenghao6.com/blog_go_第6张

golang菜鸟教程_go语言入门_https://bianchenghao6.com/blog_go_第7张

w.Header().Set("Content-Type", "application/json; charset=utf-8"),通过设置Content-Type返回json格式的内容。

设置响应的报头,不仅可以创建,也可以读取、更新和删除操作。

响应不停类型内容

常见的内容类型包括text/plain、text/html、application/json和application/xml类型。

golang菜鸟教程_go语言入门_https://bianchenghao6.com/blog_go_第8张

通过简单修改,输出的是文本类型的内容。

获取GET请求数据

golang菜鸟教程_go语言入门_https://bianchenghao6.com/blog_go_第9张

10行:w.Header().Set("Content-Type","application/json")。设置响应头的内容类型为json格式。

11行:var map1 = map[string]interface{}{}。定义一个map,key是string,value是interface类型

12行:for k, v := range r.URL.Query()。通过循环r.URL.Query获取get的数据,k是键,v是值,v是string类型的切片。

16行:marshal, _ := json.Marshal(map1)。json.Marshal将map转换为json的字节集类型

17行:w.Write([]byte(string(marshal)))。用w的Write方法输出json格式的内容。

获取POST请求数据

golang菜鸟教程_go语言入门_https://bianchenghao6.com/blog_go_第10张

发表回复