4.04 Go Web程序(3)|Go主题月

236 阅读1分钟

  上一章节中,我们初步完成了一个简单的命令行文件展示内容。在开始一个web工程之前,我们先介绍下net/http包。

Demo

package main

import (
    "fmt"
    "log"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe(":6666", nil))
}

main函数以对http的调用开始。HandleFunc它告诉http包使用handler处理所有到web根目录("/")的请求。

然后调用http.ListenAndServe,指定监听任意接口的8080端口(:8080)。(现在不必担心它的第二个参数nil。)此函数将阻塞,直到程序终止。

ListenAndServe总是返回错误,因为它只在发生意外错误时返回。为了记录该错误,我们将函数调用包装为log.fatal

函数处理程序的类型是http.HandlerFunc。它需要一个http.ResponseWriterhttp。请求作为它的参数。

一个http.ResponseWriter value组装HTTP服务器的响应;通过向它写入数据,我们将数据发送到HTTP客户机。

一个http.Request是表示客户机HTTP请求的数据结构。r.URL.Path是请求URL的路径组件。末尾的[1:]表示:创建从第一个字符到最后的路径的部分。这将从路径名中删除开头的“/”。

运行上述的代码:

[root@montos-prod ~]# curl -i http://127.0.0.1:6666/monkeys
HTTP/1.1 200 OK
Date: Thu, 01 Apr 2021 14:20:26 GMT
Content-Length: 25
Content-Type: text/plain; charset=utf-8

Hi there, I love monkeys!

总结

  上述简单的运行了一个web程序,让我们入门如何写一个Go语言的web应用,可以看出Go的模块化真的方便很多,我们只需要引入一个net/http包即可,然后再本地项目中进行一个调用。