二、HTTP Server

栏目: IT技术 · 发布时间: 5年前

内容简介:这个示例将展示如何在Go中创建基本的HTTP服务器。一个基本的HTTP服务器需要处理几个关键的任务:net/http包包含接受请求和动态处理请求所需的所有工具。可以用http.Request包含关于请求及其参数的所有信息。可以t通过

前言

这个示例将展示如何在 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知识

二、HTTP Server

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Web Application Hacker's Handbook

The Web Application Hacker's Handbook

Dafydd Stuttard、Marcus Pinto / Wiley / 2011-9-27 / USD 50.00

The highly successful security book returns with a new edition, completely updated Web applications are the front door to most organizations, exposing them to attacks that may disclose personal infor......一起来看看 《The Web Application Hacker's Handbook》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换