package main
import (
"net/http"
"io/ioutil"
"fmt"
)
func HttpHandler(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body)
if err != nil {
fmt.Println("read body fail", err)
w.WriteHeader(500)
return
}
w.Write([]byte("body: "))
w.Write(body)
w.Write([]byte("\n"))
fmt.Println("post sucess!")
fmt.Println("content: ", string(body))
}
func main() {
http.HandleFunc("/", HttpHandler)
http.ListenAndServe(":12345", nil)
}
测试:
curl -X POST --data "hello wwh!" http://192.168.1.96:12345/
解析JSON格式
package main
import (
"net/http"
"io/ioutil"
"fmt"
"encoding/json"
"strconv"
)
type User struct {
Id int `json:"id"`
Name string `json:"name"`
}
func HttpHandle(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body)
if err != nil {
fmt.Println("read body fail:", err)
w.WriteHeader(500)
return
}
var user User
if err = json.Unmarshal(body, &user); err != nil {
fmt.Println("json Unmarshal fail", err)
w.WriteHeader(500)
return
}
//respone data
w.Write([]byte("user.id: " + strconv.Itoa(user.Id) + " \n"))
w.Write([]byte("user.name: " + user.Name))
w.Write([]byte("\n"))
//print in console
fmt.Println("data: ", user)
}
func main() {
http.HandleFunc("/", HttpHandle)
http.ListenAndServe(":12346", nil)
}
发送post请求
curl -H "Content-Type: application/json" -X POST --data '{"id":123,"name":"xyz"}' http://192.168.1.96:12346/