Обычно я использую JSON API и SPA для создания веб-приложений, но я пытаюсь научиться использовать более простой метод на стороне сервера шаблонов и поведение форм по умолчанию с Go.
Я делаю что-то очень похожее на то, что видно здесь . Единственное отличие состоит в том, что я изменил action
на "/"
в форме для простоты и обработал GET и POST из одного и того же обработчика (фильтрация по типу метода).
Шаблон на стороне сервера
<form action="/" method="post" >
...
<div class="form-group">
<label for="myname">Dev Name</label>
<input type="text" class="form-control" id="myname" name="myname" value="{{.MyDname}}">
</div>
<button type="submit" class="btn btn-primary">Update</button>
</form>
Серверная сторона
func MainPage(w http.ResponseWriter, r *http.Request) {
fmt.Println("method:", r.Method) //get request method
if r.Method == "GET" {
t, err := template.New("RTL Page").Parse(page)
if err != nil {
log.Fatal(err)
}
err = t.Execute(w, State)
if err != nil {
log.Fatal(err)
}
}
if r.Method == http.MethodPost {
r.ParseForm()
...
}
}
Начальная веб-страница отображается нормально, данные отправляются корректно в POST, я отвечаю на POST всего лишь 200, но затем моя веб-страница становится пустой.
Как мне сказать браузеру сохранить или перерисовать исходную страницу? Нужно ли отправлять HTML-ответ на POST? Что-то кроме 200?