作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试创建一个 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/
我是一名优秀的程序员,十分优秀!