Home 11. web-server
Post
Cancel

11. web-server

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

웹서버 테스트 코드

JSON 데이터 전송

HTTPS 웹서버

This post is licensed under CC BY 4.0 by the author.