Go/Golang - Web Server
HTTP Web Server 기초
1. Add Handler
1
2
3
4
5
func IndexPathHandler(w http.ResponseWriter, r *http.Request) {
...
}
http.HandleFunc("/", IndexPathHandler )
2. Web Server Start
1
func ListenAndServe(addr string, handler Handler) error
1
2
3
4
5
6
7
8
9
10
11
12
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello World")
})
http.ListenAndServe(":3000" , nil)
}
HTTP WebServer 추가
HTTP 쿼리 파라미터 사용하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import (
"fmt"
"net/http"
"strconv"
)
func barHandler(w http.ResponseWriter, r *http.Request) {
values := r.URL.Query() // 쿼리 인수 가져오기
name := values.Get("name") // 특정 키값이 있는지 확인
if name == "" {
name = "World"
}
id, _ := strconv.Atoi(values.Get("id")) // id값을 가져와서 int 타입 변환
fmt.Fprintf(w, "Hello %s! id:%d", name, id)
}
func main() {
http.HandleFunc("/bar", barHandler) // "/bar" 핸들러 등록
http.ListenAndServe(":3000", nil)
}
ServeMux(Router) 인스턴스 사용하기
mux는 router와 같은 개념!
1
2
3
4
5
6
7
8
9
10
11
12
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World")
})
mux.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello World")
})
http.ListenAndServe(":3000", mux)
}
1
http://localhost:3000/bar?id=5&name=aaa
파일 서버
1
2
3
4
5
6
7
8
9
10
func main() {
// 기본 경로에서 이미지가 나오도록 만들기
http.Handle("/", http.FileServer(http.Dir("static")))
// 특정 경로에서 이미지가 나오도록 만들기
http.Handle("/static/",
http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
http.ListenAndServe(":3000", nil)
}
1
2
http://localhost:3000/europe.jpegs
http://localhost:3000/static/europe.jpeg