net/http包构建Web应用简介
下面是一个简单的Web服务器的完整工作示例:
package main
import (
"fmt"
"log"
"net/http"
)
// 相应处理
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "=======> %s", r.URL.Path[1:])
}
func main() {
// 路由处理 接收"/"后 交给handler处理
http.HandleFunc("/", handler)
// 启动服务
log.Fatal(http.ListenAndServe(":8090", nil))
}
main函数以对http.HandleFunc的调用开始,它告诉http包使用处理程序处理对web根目录("/")的所有请求。
然后调用http.ListenAndServe,指定它应该在接口(":8090")上侦听端口8090。(暂时不要担心它的第二个参数,nil)此函数将一直阻塞,直到程序终止。
ListenAndServe仅在发生意外错误时返回错误信息。为了记录该错误,我们使用log.Fatal包装函数调用。
handler函数的类型为http.HandlerFunc。它需要一个http.ResponseWriter和一个http.Request作为其参数。
http.ResponseWriter值组装HTTP服务器的响应;通过向它写入值,我们将数据发送到HTTP客户端。
http.Request是表示客户端HTTP请求的数据结构。
r.URL.Path是请求URL的路径组件。
尾部[1:]表示"从第1个字符到结尾创建路径的子片段"。
这会从路径名中删除前导"/"。
如果您运行此程序并访问URL:
http://localhost:8090/monkeys
该程序将显示一个页面,其中包含如下内容:
=======> monkeys
版权声明
由 durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。