type
status
date
slug
summary
tags
category
icon
password

初识net/http包

我们先初步介绍以下net/http包的使用,通过http.HandleFunc()和http.ListenAndServe()两个函数就可以轻松创建一个简单的Go web服务器,示例代码如下:
访问界面如下:
notion image
首先,我们调用http.HandleFunc("/hello", hello)注册路径处理函数,这里将路径/hello的处理函数设置为hello。即引号里的hello是访问地址,逗号后面的hello是我们创建的函数,用来响应这个地址的访问。处理函数的类型必须是:
其中*http.Request表示HTTP请求对象,该对象包含请求的所有信息,如URL、首部、表单内容、请求的其他内容等。
http.ResponseWriter是一个接口类型:
main()函数通过代码http.ListenAndServe(":8000“,nil)启动一个8000端口的服务器。
ListenAndServe()函数有两个参数,当前监听的端口号和事件处理器Handler。如果ListenAndServe()传入的第一个参数地址为空,则服务器在启动后默认使用http://localhost:8080地址进行访问;如果这个函数传入的第二个参数为nil,则服务器在启动后将使用默认的多路复用器DefaultServeMux。
要想结束这个服务器,只需要在终端输入Ctrl+c
我们来逐步看这个代码。首先处理了两个url,对于/main这个url我们传输了两个json数据。有两种方法可以将数据转换为json格式,一种是利用结构体,另外一种是使用map。map转换成json格式输出是的顺序并不是按我们定的顺序,而是按照字符串的从小到大的顺序。
notion image
对于/index这个网页,我们使用count这个函数,服务器每一次接收请求处理时都会另起一个goroutine,这样服务器就可以同一时间处理多个请求。然而在并发情况下,假如真的有两个请求同一时刻去更新count,那么这个值可能并不会被正确地增加;这个程序可能会引发一个严重的bug:竞态条件。为了避免这个问题,我们必须保证每次修改变量的最多只能有一个goroutine,这也就是代码里的mu.Lock()和mu.Unlock()调用将修改count的所有行为包在中间的目的。
notion image
notion image
SQL使用教程Go语言中结构体与json映射
Serendipity
Serendipity
From CCNU
Announcement
type
status
date
slug
summary
tags
category
icon
password
本网站部署于国外服务器,国内访问较慢。多刷新或挂梯子。