0
点赞
收藏
分享

微信扫一扫

Go语言与Java:一场编程语言之争

无愠色 2023-12-01 阅读 44
欢迎大家到我的博客浏览。go的HTTP网络编程 | YinKai's Blog

go的HTTP网络编程

1、http编程--server示例

package main
​
import (
    "fmt"
    "net/http"
)
​
func main() {
    // 注册处理函数,定义 URL 路由和对应的处理函数
    http.HandleFunc("/", Hello)         // 根路径 "/" 的请求交给 Hello 函数处理
    http.HandleFunc("/login", Login)   // "/login" 路径的请求交给 Login 函数处理
​
    // 启动 HTTP 服务器,监听指定的地址和端口
    err := http.ListenAndServe("0.0.0.0:8080", nil)   // 启动服务器,监听地址 "0.0.0.0:8080",使用默认的路由器和处理器
    if err != nil {
        fmt.Println("HTTP 服务器启动失败", err)
    }
}
​
func Hello(w http.ResponseWriter, r *http.Request) {
    // 处理根路径 "/" 的请求
    fmt.Fprintf(w, "Hello, World!")   // 将 "Hello, World!" 写入 http.ResponseWriter,作为 HTTP 响应的内容
}
​
func Login(w http.ResponseWriter, r *http.Request) {
    // 处理 "/login" 路径的请求
    fmt.Fprintf(w, "Login page")   // 将 "Login page" 写入 http.ResponseWriter,作为 HTTP 响应的内容
}
​

示例说明:

2、http编程--Client示例

package main
​
import (
    "fmt"
    "io/ioutil"
    "net/http"
)
​
func main() {
    // 创建一个 HTTP 客户端
    client := http.Client{}
​
    // 构建 GET 请求
    req, err := http.NewRequest("GET", "https://www.example.com", nil)
    if err != nil {
        fmt.Println("创建请求失败", err)
        return
    }
​
    // 发送请求
    res, err := client.Do(req)
    if err != nil {
        fmt.Println("请求失败", err)
        return
    }
    defer res.Body.Close() // 在函数结束时关闭响应的 Body
​
    // 读取响应的内容
    data, err := ioutil.ReadAll(res.Body)
    if err != nil {
        fmt.Println("读取响应失败", err)
        return
    }
​
    // 输出响应的内容
    fmt.Println(string(data))
}

示例说明:

3、常见HTTP请求方法

4、下面是一个简单的 Go 语言程序,演示了如何使用 HTTP 请求方法进行基本的 HTTP 请求:

package main
​
import (
    "fmt"
    "net/http"
    "io/ioutil"
)
​
func main() {
    // GET 请求示例
    resp, err := http.Get("https://jsonplaceholder.typicode.com/posts/1") // 发起 GET 请求
    if err != nil {
        fmt.Println("GET 请求错误:", err)
        return
    }
    defer resp.Body.Close() // 确保在函数退出前关闭响应体
​
    data, err := ioutil.ReadAll(resp.Body) // 读取响应体数据
    if err != nil {
        fmt.Println("读取响应数据错误:", err)
        return
    }
​
    fmt.Println("GET 请求响应数据:", string(data)) // 打印响应数据
​
    // POST 请求示例
    resp, err = http.Post("https://jsonplaceholder.typicode.com/posts", "application/json", nil) // 发起 POST 请求
    if err != nil {
        fmt.Println("POST 请求错误:", err)
        return
    }
    defer resp.Body.Close()
​
    data, err = ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("读取响应数据错误:", err)
        return
    }
​
    fmt.Println("POST 请求响应数据:", string(data))
​
    // PUT 请求示例
    req, err := http.NewRequest("PUT", "https://jsonplaceholder.typicode.com/posts/1", nil) // 创建 PUT 请求
    if err != nil {
        fmt.Println("创建 PUT 请求错误:", err)
        return
    }
​
    client := &http.Client{}
    resp, err = client.Do(req) // 发起 PUT 请求
    if err != nil {
        fmt.Println("PUT 请求错误:", err)
        return
    }
    defer resp.Body.Close()
​
    data, err = ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("读取响应数据错误:", err)
        return
    }
​
    fmt.Println("PUT 请求响应数据:", string(data))
​
    // DELETE 请求示例
    req, err = http.NewRequest("DELETE", "https://jsonplaceholder.typicode.com/posts/1", nil) // 创建 DELETE 请求
    if err != nil {
        fmt.Println("创建 DELETE 请求错误:", err)
        return
    }
​
    resp, err = client.Do(req) // 发起 DELETE 请求
    if err != nil {
        fmt.Println("DELETE 请求错误:", err)
        return
    }
    defer resp.Body.Close()
​
    data, err = ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("读取响应数据错误:", err)
        return
    }
​
    fmt.Println("DELETE 请求响应数据:", string(data))
}
举报

相关推荐

0 条评论