22

二、HTTP Server

 3 years ago
source link: https://studygolang.com/articles/29538
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

这个示例将展示如何在Go中创建基本的HTTP服务器。一个基本的HTTP服务器需要处理几个关键的任务:

  1. 处理动态请求:处理来自浏览网站、登录帐户或发布图片的用户的请求。
  2. 提供静态资源:为浏览器提供JavaScript、CSS和图像,为用户创建动态体验。
  3. 接受连接:HTTP服务器必须监听一个特定的端口,以便能够接受来自internet的连接。

处理动态请求

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包含关于请求及其参数的所有信息。可以t通过 r.URL.Query(). GET(“token”) 读取GET参数,或者通过 r.FormValue(“email”) 读取POST参数。

提供静态资源

为了提供JavaScript、CSS和图像等静态资源,可以使用内建函数 http.FileServer ,其参数指向一个url路径。文件服务器需要知道从哪里提供文件,方法如下:

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

文件服务器就绪后,只需将url路径指向它,就像处理动态请求时所做的那样。需要注意的一点是:为了正确地提供文件,需要删除url路径中文件所在目录的名称。

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

接受连接

完成基本的HTTP服务器的最后一步是,监听端口以接受来自internet的连接。Golang有一个内置的HTTP服务器,可以快速启动。启动后,可以在浏览器中查看HTTP服务器。

代码

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)
}

欢迎关注我们的微信公众号,每天学习Go知识

FveQFjN.jpg!web

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK