gpt4 book ai didi

json - 如何让 GoLang 的 http.HandleFunc() 正常工作?

转载 作者:IT王子 更新时间:2023-10-29 02:22:26 25 4
gpt4 key购买 nike

我正在尝试创建一个 GoLang http.HandleFunc() 来监听发布请求并解析一个 json 文件。处理程序似乎在启动时失败并返回错误:

2017/01/24 13:35:08 listen tcp :8080: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

我假设它抛出了一个 fatal error 。

下面是我的函数:

 http.HandleFunc("/", func(w http.ResponseWriter, request *http.Request) {

//debug
fmt.Fprintf(w, "Hello, %q", html.EscapeString(request.URL.Path))

var m Message

if request.Body == nil {
http.Error(w, "Please send a request body", 400)
return
}

err := json.NewDecoder(request.Body).Decode(&m)
if err != nil {
http.Error(w, err.Error(), 400)
return
}
})
log.Fatal(http.ListenAndServe(":8080", nil))

我怎样才能让这个 Handler 正常工作而不出现错误?

最佳答案

我已经解决了您的代码中的几个问题,并对丢失的信息做出了最佳猜测。以下是示例工作代码,它将接受具有“名称”和“文本”字段的消息:

package main

import (
"encoding/json"
"fmt"
"html"
"log"
"net/http"
)

type Message struct {
Name string `json:"name"`
Text string `json:"text"`
}

func main() {
http.HandleFunc("/", func(w http.ResponseWriter, request *http.Request) {
fmt.Fprintf(w, "Hello, %q", html.EscapeString(request.URL.Path))

var m Message

if request.Body == nil {
http.Error(w, "Please send a request body", 400)
return
}

err := json.NewDecoder(request.Body).Decode(&m)
if err != nil {
http.Error(w, err.Error(), 400)
return
}

log.Println(m)
})

log.Fatal(http.ListenAndServe(":8080", nil))
}

关于json - 如何让 GoLang 的 http.HandleFunc() 正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41836655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com