前提・実現したいこと
標準パッケージのみでjsonAPIを開発したいです。
ある程度まで調べ、コーディングしてみましたが結果が得られません。
どのように実装すればいいか教えていただきたいです。
発生している問題・エラーメッセージ
?name=abc
でPOSTしても、データが表示できない。
該当のソースコード
test.go
1package main 2 3import ( 4 "encoding/json" 5 "fmt" 6 // "io/ioutil" 7 "net/http" 8 // "Request.Body" 9 10 // ? 11 "bytes" 12 // ? 13 "io" 14) 15 16// jsonのSchema 17type InputJsonSchema struct { 18 Name string `json:"name"` 19} 20 21func main() { 22 http.HandleFunc("/user/create", func(w http.ResponseWriter, r *http.Request) { 23 // request bodyの読み取り 24 25 //test 26 fmt.Fprintf(w, "<h1>Test</h1>") 27 28 switch r.Method { 29 case http.MethodGet: 30 w.WriteHeader(http.StatusOK) 31 fmt.Fprint(w, "GET hello!\n") 32 33 34 case http.MethodPost: 35 // w.WriteHeader(http.StatusCreated) 36 fmt.Fprint(w, "POST hello!\n") 37 38 body := r.Body 39 defer body.Close() 40 41 buf := new(bytes.Buffer) 42 io.Copy(buf, body) 43 44 45 var hello InputJsonSchema 46 json.Unmarshal(buf.Bytes(), &hello) 47 48 // w.WriteHeader(http.StatusCreated) 49 // fmt.Fprint(w, "POST hello! %v \n", hello.Name) 50 fmt.Printf("POST hello! %v \n", hello) 51 52 default: 53 w.WriteHeader(http.StatusMethodNotAllowed) 54 fmt.Fprint(w, "Method not allowed.\n") 55 56 // ody := r.Body 57 58 } 59 }) 60 61 http.ListenAndServe(":8080", nil) 62}
実行結果
API server listening at: 127.0.0.1:10290 POST hello! {}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/19 03:01
2020/04/19 07:53
2020/04/19 09:06 編集
2020/04/19 09:51