Skip to content

Latest commit

 

History

History
63 lines (45 loc) · 2.09 KB

B-render-html-string.md

File metadata and controls

63 lines (45 loc) · 2.09 KB

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 string html sebagai output.

B.10.1. Praktek

Langsung saja kita praktekkan, siapkan folder projek 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 bertipe string disiapkan, dengan isi adalah string html yang akan kita jadikan sebagai output nantinya.

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 menggunakan 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. Test

Lakukan tes dan lihat hasilnya.

String html sebagai output