B.10. Template: Render HTML String
Output HTML yang muncul, selain bersumber dari template view bisa juga bersumber dari sebuah string. Dengan menggunakan method Parse()
milik *template.Template
kita bisa menjadikan HTML string sebagai output di web.
B.10.1. Praktek
Langsung saja kita praktekkan, siapkan folder project baru beserta file main.go
, isi dengan kode berikut.
package main
import "net/http"
import "fmt"
import "html/template"
const view string = `<html>
<head>
<title>Template</title>
</head>
<body>
<h1>Hello</h1>
</body>
</html>`
Konstanta bernama view
dengan tipe string
disiapkan, isinya HTML string yang nanbtinya kita jadikan sebagai output pengaksesan endpoint.
Kemudian buat fungsi main()
, isinya adalah route handler /index
. Dalam handler tersebut, string html view
diparsing lalu dirender sebagai output.
Tambahkan juga rute /
yang isinya adalah me-redirect request secara paksa ke /index
(via fungsi http.Redirect()
).
func main() {
http.HandleFunc("/index", func(w http.ResponseWriter, r *http.Request) {
var tmpl = template.Must(template.New("main-template").Parse(view))
if err := tmpl.Execute(w, nil); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
})
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "/index", http.StatusTemporaryRedirect)
})
fmt.Println("server started at localhost:9000")
http.ListenAndServe(":9000", nil)
}
Pada kode di atas bisa dilihat sebuah template bernama main-template
disiapkan. Template tersebut diisi dengan hasil parsing string html view
lewat method Parse()
.
B.10.2. Testing
Lakukan tes dan lihat hasilnya.