Go基础学习记录 - 编写Web应用程序 - 使用net/http包来构建Web应用

简介: 转载的地址Go基础学习记录 - 编写Web应用程序 - 使用net/http包来构建Web应用使用net/http来构建Web应用要使用net/http包,必须导入:import (    "fmt"    "io/ioutil"    "net/http" // 注意这里)让我们创建一个允许用户查看Wiki页面的处理程序viewHandler。

转载的地址

Go基础学习记录 - 编写Web应用程序 - 使用net/http包来构建Web应用

使用net/http来构建Web应用

要使用net/http包,必须导入:

import (
    "fmt"
    "io/ioutil"
    "net/http" // 注意这里
)

让我们创建一个允许用户查看Wiki页面的处理程序viewHandler。它将处理前缀为"/view/"的URL。

func viewHandler(w http.ResponseWriter, r *http.Request) {
    title := r.URL.Path[len("/view/"):]
    p, _ := loadPage(title)
    fmt.Fprintf(w, "<h1>%s</h1><div>%s</div>", p.Title, p.Body)
}

再次注意,使用`_`来忽略loadPage的错误返回值。
这样做是为了简单起见,通常被认为是不好的做法。
后面会讨论这个问题。
首先,此函数从r.URL.Path中提取页面标题,r.URL.Path是请求URL的路径组件。
使用[len("/view/"):]重新切片路径以删除请求路径的前导"/view/"组件。
这是因为路径总是以"/view/"开头,这不是页面标题的一部分。
然后,该函数加载页面数据,使用一串简单的HTML格式化页面,并将其写入w,即http.ResponseWriter。
要使用此处理程序,我们重写main函数以使用viewHandler初始化http以处理path /view/下的任何请求。

func main() {
    http.HandleFunc("/view/", viewHandler)
    log.Fatal(http.ListenAndServe(":8090", nil))
}

我们创建一些页面数据(作为test.txt),编译我们的代码,并尝试提供维基页面。
在编辑器中打开test.txt文件,并在其中保存字符串"I Like Gowhich"(不带引号)。

$ go build wiki.go
$ ./wiki

运行此Web服务器后,访问http://localhost:8090/view/test应显示一个标题为"test"的页面,其中包含"I Like Gowhich"字样。
但是访问其他页面的时候,则程序会报错。这个问题我们后面慢慢解决

目录
相关文章
|
1月前
|
安全 应用服务中间件 网络安全
实战经验分享:利用免费SSL证书构建安全可靠的Web应用
本文分享了利用免费SSL证书构建安全Web应用的实战经验,涵盖选择合适的证书颁发机构、申请与获取证书、配置Web服务器、优化安全性及实际案例。帮助开发者提升应用安全性,增强用户信任。
|
2月前
|
监控 前端开发 JavaScript
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
43 6
|
2月前
|
存储 消息中间件 缓存
构建互联网高性能WEB系统经验总结
如何构建一个优秀的高性能、高可靠的应用系统对每一个开发者至关重要
38 2
|
1月前
|
存储 监控 算法
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
84 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
1月前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
46 7
|
1月前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
1月前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
116 71
|
1月前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
117 67
|
7天前
|
存储 监控 算法
内网监控系统之 Go 语言布隆过滤器算法深度剖析
在数字化时代,内网监控系统对企业和组织的信息安全至关重要。布隆过滤器(Bloom Filter)作为一种高效的数据结构,能够快速判断元素是否存在于集合中,适用于内网监控中的恶意IP和违规域名筛选。本文介绍其原理、优势及Go语言实现,提升系统性能与响应速度,保障信息安全。
22 5