Go网络编程-Hello World

来自泡泡学习笔记
跳到导航 跳到搜索

简介

Go是一种内置包的编程语言,并且已经内置了web服务器。标准库中的net/http包包含了所有关于HTTP协议的功能。这包括(以及其他许多功能)一个HTTP客户端和一个HTTP服务器。在这个例子中,你将了解到创建一个简单的web服务器并在浏览器中查看是多么简单。


注册请求处理器

首先,创建一个处理器来接收来自浏览器、HTTP客户端或API请求的所有传入HTTP连接。在Go中,一个处理器是一个具有以下签名的函数:


func (w http.ResponseWriter, r *http.Request)


该函数接收两个参数:

  • 一个http.ResponseWriter,您可以在其中写入您的text/html响应。
  • 一个http.Request,其中包含有关此HTTP请求的所有信息,包括URL或头部字段等信息。


将请求处理器注册到默认的HTTP服务器就是这么简单:

http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, you've requested: %s\n", r.URL.Path)
})


监听HTTP连接

仅请求处理器无法从外部接受任何HTTP连接。HTTP服务器必须监听端口以将连接传递给请求处理器。因为端口80在大多数情况下是HTTP流量的默认端口,这个服务器也将在其上监听。


以下代码将启动Go的默认HTTP服务器,并在端口80上监听连接。您可以在浏览器中导航到http://localhost/,并查看您的服务器处理您的请求。

http.ListenAndServe(":80", nil)


完整代码

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, you've requested: %s\n", r.URL.Path)
    })

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