私は現在、このhttp: multiple response.WriteHeader calls
エラーを受信していますが、Angularへの応答を返そうとしています。私がやっている主なことは、AngularからGoへの投稿リクエストを送信することです。 Goは受け取ったデータをmongoDBに挿入しますが、ユーザー名がすでに存在する場合はdup="true"
を変更してカスタム応答を送信します。http:multiple response.WriteHeader calls
func Register(w http.ResponseWriter, req *http.Request) {
u := req.FormValue("username")
p := req.FormValue("password")
e := req.FormValue("email")
n := req.FormValue("name")
err := tpl.ExecuteTemplate(w, "index.html", User{u, p, e, n})
if err != nil {
http.Error(w, err.Error(), 500)
log.Fatalln(err)
}
a := User{Username: u, Password: p, Email: e, Name: n}
if a.Username != "" || a.Password != "" || a.Email != "" || a.Name != "" {
insert(a)
if dup == "true" {
w.WriteHeader(http.StatusInternalServerError)
}
}}
w.WriteHeader(http.StatusInternalServerError)
は単なる例であり、私が書いたヘッダーで何かを使うと、私は同じことになりますhttp: multiple response.WriteHeader calls
'に渡すことで、テンプレートをレンダリングすることができますをレンダリングするときに発生する可能性のある潜在的なエラーを処理したい場合は、 'dup ==" true "'ならば、それ以降に別のレスポンスヘッダを書くことはできません。単一のリクエストエラーによりサーバがクラッシュする可能性があるので、ウェブサーバで 'log.Fatal'を使用したくない場合もあります。 – JimB