package
0.0.0-20240407120403-8f3d0ab40757
Repository: https://github.com/mingadinga/go-webserver.git
Documentation: pkg.go.dev

# README

gorilla pat

go get github.com/gorilla/pat

gorilla router보다 심플한 라우팅 표현 지원

func main() {
	router := pat.New()

	router.Get("/things", getAllTheThings)
	router.Put("/things/{id}", putOneThing)
	router.Delete("/things/{id}", deleteOneThing)
	router.Get("/", homeHandler)

	http.Handle("/", router)

	log.Print("Listening on 127.0.0.1:8000...")
	log.Fatal(http.ListenAndServe(":8000", nil))
}

render

go get github.com/unrolled/render

easily rendering JSON, XML, text, binary data, and HTML templates

Json 렌더링

func addUserHandler(w http.ResponseWriter, r *http.Request) {
	user := new(User)
	err := json.NewDecoder(r.Body).Decode(user)
	if err != nil {
        // render err
		rd.Text(w, http.StatusBadRequest, err.Error())
		return
	}
	user.CreatedAt = time.Now()

	// render user data
	rd.JSON(w, http.StatusOK, user)
}

Html 렌더링

var rd *render.Render // 렌더링 포인터

func helloHandler(w http.ResponseWriter, r *http.Request) {
    user := User{Name: "tucker", Email: "[email protected]"}
    rd.HTML(w, http.StatusOK, "body", user)
}

// 이 디렉터리로부터 이 확장자 파일을 읽는 렌더러
rd = render.New(render.Options{
Directory:  "template",
Extensions: []string{".html", ".tmpl"},
Layout:     "hello",
})
<!--layout : hello.html-->
<html>
<head>
    <title>{{ partial "title" }}</title>
</head>
<body>
Hello World
{{ yield }}
</body>
</html>

<!--yield : body.html -->
Name: {{.Name}}
Email: {{.Email}}

<!-- title-body.html -->
Partial Go in Web

nergroni

go get github.com/urfave/negroni

http middleware for golang
많이 사용하는 부가 기능을 제공하는 라이브러리

func main() {
	
	mux := pat.New()

	mux.Get("/users", getUserInfoHandler)
	mux.Post("/users", addUserHandler)
	mux.Get("/hello", helloHandler)

	// mux에 부가기능 래핑, 파일 서버나 로그 등 다양한 부가기능 제공
	n := negroni.Classic()
	n.UseHandler(mux)

	//mux.Handle("/", http.FileServer(http.Dir("public")))

	http.ListenAndServe(":3000", n)
}

# Structs

No description provided by the author