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"字样。
但是访问其他页面的时候,则程序会报错。这个问题我们后面慢慢解决

目录
相关文章
|
3天前
|
SQL 缓存 搜索推荐
后端技术在现代Web开发中的应用与挑战
本文将深入探讨后端技术在现代Web开发中的重要性,涵盖从基础架构到性能优化的多个方面。通过分析当前主流后端技术的优缺点,并提供一些实用的解决方案和建议,帮助开发者更好地应对日常开发中的挑战。
15 1
|
10天前
|
编译器 Go
go语言学习记录(关于一些奇怪的疑问)有别于其他编程语言
本文探讨了Go语言中的常量概念,特别是特殊常量iota的使用方法及其自动递增特性。同时,文中还提到了在声明常量时,后续常量可沿用前一个值的特点,以及在遍历map时可能遇到的非顺序打印问题。
|
14天前
|
Ubuntu 持续交付 API
如何使用 dotnet pack 打包 .NET 跨平台程序集?
`dotnet pack` 是 .NET Core 的 NuGet 包打包工具,用于将代码打包成 NuGet 包。通过命令 `dotnet pack` 可生成 `.nupkg` 文件。使用 `--include-symbols` 和 `--include-source` 选项可分别创建包含调试符号和源文件的包。默认情况下,`dotnet pack` 会先构建项目,可通过 `--no-build` 跳过构建。此外,还可以使用 `--output` 指定输出目录、`-c` 设置配置等。示例展示了创建类库项目并打包的过程。更多详情及命令选项,请参考官方文档。
55 11
|
8天前
|
人工智能 关系型数据库 数据安全/隐私保护
后端技术在现代Web开发中的应用与挑战
本文将深入探讨后端技术在现代Web开发中的重要性,通过分析其在数据处理、业务逻辑实现和安全性保障方面的应用,揭示后端技术的核心价值。同时,本文还将讨论当前后端开发面临的主要挑战,如高并发处理、数据安全、微服务架构的复杂性等,并给出相应的解决方案。无论是后端开发者还是对后端技术感兴趣的读者,都可以通过这篇文章获得启发和指导。
|
16天前
|
前端开发 安全 JavaScript
构建高效Web应用:前后端分离架构的实践
【9月更文挑战第4天】在数字时代,Web应用已成为企业与用户互动的主要平台。本文将介绍如何通过前后端分离的架构设计来构建高效的Web应用,探讨该架构的优势,并分享实现过程中的关键步骤和注意事项。文章旨在为开发者提供一种清晰、高效的开发模式,帮助其在快速变化的市场环境中保持竞争力。
|
14天前
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
|
20天前
|
中间件 编译器 数据处理
在web开发中应用管道过滤器
【9月更文挑战第1天】本文介绍管道-过滤器架构将数据处理流程分解为一系列独立组件,通过管道连接,适用于数据流处理如图像处理、编译器设计等。通过具体实例说明了Gin如何有效支持管道-过滤器风格的设计,构建高性能Web服务。
33 9
|
14天前
|
自然语言处理 C# 图形学
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
|
17天前
|
存储 Go
Golang语言基于go module方式管理包(package)
这篇文章详细介绍了Golang语言中基于go module方式管理包(package)的方法,包括Go Modules的发展历史、go module的介绍、常用命令和操作步骤,并通过代码示例展示了如何初始化项目、引入第三方包、组织代码结构以及运行测试。
19 3
|
19天前
|
Rust Linux Go
Rust/Go语言学习
Rust/Go语言学习