Go语言中的net/http包

深入浅出:Go语言中的 net/http包

引言

net/http 是 Go 语言标准库中用于处理 HTTP 请求和响应的核心包。它提供了简单易用的 API,使得开发者可以快速构建高性能的 HTTP 服务器和客户端。

什么是 net/http?

net/http 包是 Go 语言中用于处理 HTTP 协议的标准库。它提供了以下功能:

  • HTTP 服务器:可以轻松创建一个 HTTP 服务器,处理来自客户端的请求。
  • HTTP 客户端:可以发起 HTTP 请求,与外部服务进行交互。
  • 路由管理:支持基于路径、方法等条件的路由匹配。
  • 中间件:可以通过中间件扩展服务器的功能,如日志记录、认证等。
  • 文件服务:可以方便地提供静态文件服务。
  • 错误处理:提供了统一的错误处理机制,确保应用程序的健壮性。

创建一个简单的 HTTP 服务器

基本示例

下面是一个简单的 HTTP 服务器示例,展示了如何使用 net/http 包来处理 GET 请求。

package main

import (
    "fmt"
    "net/http"
)

func helloHandler(w http.ResponseWriter, r *http.Request) {
   
    fmt.Fprintf(w, "Hello, World!")
}

func main() {
   
    http.HandleFunc("/", helloHandler)
    fmt.Println("Starting server on :8080")
    if err := http.ListenAndServe(":8080", nil); err != nil {
   
        fmt.Println("Error starting server:", err)
    }
}

在这个例子中,我们定义了一个名为 helloHandler 的处理函数,它会在接收到请求时向客户端发送 “Hello, World!”。然后,我们使用 http.HandleFunc 将该处理函数绑定到根路径 /,并通过 http.ListenAndServe 启动服务器,监听在 :8080 端口上。

处理不同 HTTP 方法

net/http 包不仅支持处理 GET 请求,还可以处理其他 HTTP 方法,如 POST、PUT、DELETE 等。我们可以根据请求的方法来执行不同的逻辑。

package main

import (
    "fmt"
    "net/http"
)

func handleRequest(w http.ResponseWriter, r *http.Request) {
   
    switch r.Method {
   
    case "GET":
        fmt.Fprintf(w, "This is a GET request")
    case "POST":
        fmt.Fprintf(w, "This is a POST request")
    default:
        http.Error(w, "Unsupported method", http.StatusMethodNotAllowed)
    }
}

func main() {
   
    http.HandleFunc("/", handleRequest)
    fmt.Println("Starting server on :8080")
    if err := http.ListenAndServe(":8080", nil); err != nil {
   
        fmt.Println
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件架构师笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值