Go: Http and Template
13658 ワード
1. http.ListenAndServer
ListenAndServerは、addrアドレスとしてTCPネットワーク上で傍受される.
そして、ハンドラーによってサービスが呼び出されて、着信接続の要求が処理される.
プロセッサは通常nilであり、この場合はDefaultServiceMuxを使用します.
package main
import (
"fmt"
"net/http"
)
const port string = ":4000"
func main() {
fmt.Printf("Listening server : http://localhost%s\n", port)
http.ListenAndServe(port, nil)
}
localhost:4000に接続すると、404 page not foundが表示され、正常に動作していることを示します.
2. http.HandleFunc
handleFuncは、DefaultServiceMuxに所定のモードのhandler関数を登録します.
ルートのキャラだと思っておけばいい
パラメータ受信モードとhandler、モードはルーティングするアドレスを記入するだけで、handler関数
func(rw http.ResponseWriter, r *http.Request)
この構成で記入して登録すればいいです.
package main
import (
"fmt"
"net/http"
)
const port string = ":4000"
func main() {
fmt.Printf("Listening server : http://localhost%s\n", port)
http.HandleFunc("/" ,func(rw http.ResponseWriter, r *http.Request) {
fmt.Fprint(rw, "Hello World!")
})
http.ListenAndServe(port, nil)
}
「/」へのルーティング時にHelloWorldが表示される例.
HandleFuncに"/"モードを登録し、Fprintを使用してioをhttp応答に変換し、「hello world」文字列を出力します.
3. Template
templateパッケージを使用すると、htmlテンプレートを簡単にインポートし、SSRでレンダリングできます.
1.まずhtmlファイルを作成します。
vscodeで拡張します.gohtmlを使用してgotemplate-syntax拡張子を使用すると、後でデータを渡すときにハイライト表示されるので、事前にダウンロードできます.
2. ParseFiles
TemplateパッケージのParseFilesメソッドを使用して、ファイルをスライスしてインポートします.
ParseFilesメソッドは、テンプレートファイル名をパラメータ*templateとして受け入れます.Template、errorを返します
package main
import (
"fmt"
"html/template"
"net/http"
)
const port string = ":4000"
func HandleHome(rw http.ResponseWriter, r *http.Request) {
tmpl, err := template.ParseFiles("home.gohtml")
if err != nil {
panic(err)
}
}
func main() {
fmt.Printf("Listening server : http://localhost%s\n", port)
http.HandleFunc("/" , HandleHome)
http.ListenAndServe(port, nil)
}
3. Execute
Executeメソッドを使用して、パーティション化されたテンプレートがレンダリングされます.
パラメータはI/O変数とデータインタフェースを受信します.
package main
import (
"fmt"
"html/template"
"net/http"
)
const port string = ":4000"
func HandleHome(rw http.ResponseWriter, r *http.Request) {
tmpl, err := template.ParseFiles("home.gohtml")
if err != nil {
panic(err)
}
tmpl.Execute(rw, nil)
}
func main() {
fmt.Printf("Listening server : http://localhost%s\n", port)
http.HandleFunc("/" , HandleHome)
http.ListenAndServe(port, nil)
}
レンダリングに成功しました.
4. Must
templateパッケージにはMustというユーティリティが用意されており、エラー処理の簡素化に役立ちます.
パラメータ(*template.template,err)を受信します.
エラーがある場合はエラー処理を行い、エラーがない場合は通常の*templateとなります.Template値を返します.
次のコードは、上記の例と100%一致する結果を示します.
package main
import (
"fmt"
"html/template"
"net/http"
)
const port string = ":4000"
func HandleHome(rw http.ResponseWriter, r *http.Request) {
tmpl := template.Must(template.ParseFiles("home.gohtml"))
tmpl.Execute(rw, nil)
}
func main() {
fmt.Printf("Listening server : http://localhost%s\n", port)
http.HandleFunc("/" , HandleHome)
http.ListenAndServe(port, nil)
}
Reference
この問題について(Go: Http and Template), 我々は、より多くの情報をここで見つけました https://velog.io/@obm4489/Go-Http-and-Templateテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol