Go开发HTTP

来源:互联网 发布:娱乐网源码 编辑:程序博客网 时间:2024/06/02 03:33
package mainimport (    "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 mainimport (    "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/