Handle-HTTP 服务

未匹配的标注

开始

通过这个例子你可以在 GO 中创建一个 HTTP 服务,首先,这将告诉你 HTTP 服务将包含哪些功能。一个基础 HTTP 服务将有一些职责要处理。

处理动态请求:处理当用户浏览网页产生的请求,记录他们的账号或者上传的图片。

静态资源服务: 创建一个服务动态接收用户浏览产生的 JavaScript, CSS 和 images 请求。

接收连接: HTTP 服务必须监听一个特殊端口接收来自网络连接。

处理动态请求

net/http 这个包提供所需工具来接收请求和动态处理,我们可以注册一个信息的函数 http.HandleFunc

它的第一个参数提供一个路径匹配, 第二个参数是一个函数执行。在这个例子中,他或她在浏览器网页访问 (http://example.com/),映入眼帘的是一个不错的信息。

http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Welcome to my website!")
})

对于动态方面,http.Request 包含关于请求和请求参数的所有信息。你可以使用 r.URL.Query().Get("token")读取 GET 参数或者使用 r.FormValue("email")读取 POST 参数(来自于表单中的一个字段)

静态服务

通过 静态服务资源接收像JavaScript, CSS 和 images,我们使用内置 http.FileServer 和点击一个 URL 路径。对于一个正常的工作的文件服务需要知道文件地址。我们需要像这样处理:

fs := http.FileServer(http.Dir("static/"))

一旦我们文件服务放在适当的位置,我们只需在这点击一个 URL 路径,就像之前做的动态请求。 一件事情需要知道:为了正确访问到文件,我们需要去剥开URL路径。通常这个名称是存文件的位置。

http.Handle("/static/", http.StripPrefix("/static/", fs))

请求连接

我们基础 HTTP 服务还有最后一件事情需要完成,去监听从网络请求连接的一个端口。你可以猜一猜,Go 同样有一个内置 HTTP 服务,我们能快速启动。一旦启动,你就可以在你的浏览器看到你的 HTTP 服务。

http.ListenAndServe(":80", nil)

代码(复制/粘贴)

这个是完整的代码,你可以通过这个例子自己尝试一下

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Welcome to my website!")
    })

    fs := http.FileServer(http.Dir("static/"))
    http.Handle("/static/", http.StripPrefix("/static/", fs))

    http.ListenAndServe(":80", nil)
}

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~