2017-04-24 7 views
1

は私がgolangを使用して小規模なWebアプリケーションを書かれている空の値を与えるr.Fromは、[ "ユーザー名"]

行くのバージョンgo1.7.4のLinux/AMD64 ゴーコード:

r.ParseForm() 
     // logic part of log in 
     fmt.Println("username:", r.Form["username"]) 
     fmt.Println("password:", r.Form["password"]) 

 
 
HTML template 
 
<body> 
 
    <div class="container"> 
 
     <h1>Login In</h1> 
 
     <form action="/login" method="POST"> 
 
      <div class="form-group"> 
 
       <label for="username">User Name</label> 
 
       <input type="text" class="form-control" name="username" placeholder="Please enter your user name"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <label for="password">Password</label> 
 
       <input type="password" class="form-control" name="password" placeholder="Please enter your password"> 
 
      </div> 
 
      <button type="submit" class="btn btn-success">Login</button> 
 
     </form> 
 
    </div> 
 
</body>

私は印刷しています

requestbody, _ := ioutil.ReadAll(r.Body) 
log.Println("request body is", string(requestbody)) 

入力したユーザー名とパスワードとともに正しい値が印刷されています。 しかし、r.Formを使って印刷しようとしたとき、それは空の値を与えています。 このアプローチで何か問題はありますか?コードの下

func loginHandler(w http.ResponseWriter, r *http.Request) { 
    log.Println("loginHandler") 
    log.Println("request url is", r.RequestURI) 
    log.Println("request method", r.Method) 
    requestbody, _ := ioutil.ReadAll(r.Body) 
    log.Println("request body is", string(requestbody)) 
    if r.Method == "POST" { 
     r.ParseForm() 
     // logic part of log in 
     fmt.Println("username:", r.Form["username"]) 
     fmt.Println("password:", r.Form["password"]) 
     us, err := globalSessions.SessionStart(w, r) 
     if err != nil { 
      http.Error(w, err.Error(), http.StatusInternalServerError) 
      return 
     } 
     w.Header().Set("Location", "/auth") 
     w.WriteHeader(http.StatusFound) 
     return 
    } 
    outputHTML(w, r, "static/login.html") 
} 

答えて

3

コメント:

requestbody, _ := ioutil.ReadAll(r.Body) 

Request.Bodyのタイプはr.Bodyを空にしますReadCloserですので。

FYI Golang read request body

+0

はいリクエストボディ、歓声 –

関連する問題