don't stop believing

첫 번째 웹 서버(Hello Tongchun!) 본문

Golang/Web App

첫 번째 웹 서버(Hello Tongchun!)

Tongchun 2019. 1. 31. 16:18

go로 첫번째 웹 서버를 실행해 보겠습니다.

Hello Tongchun! 부터 시작해 봐야죠.


go를 설치하셨다면 gopath로 가서 first_webapp이라고 폴더를 만듭니다. 폴더 안에 server.go 파일을 만들고 아래와 같이 추가합니다.

package main

import (
	"fmt"
	"net/http"
)

func handler(writer http.ResponseWriter, request *http.Request) {
	fmt.Fprintf(writer, "Hello Tongchun, %s!", request.URL.Path[1:])
}

func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":8080", nil)
}

첫 번째 줄에는 package 키워드에 이어 패키지 이름을 선언합니다. 실행 가능한 프로그램이 되려면 패키지 이름을 항상 main이 되어야 합니다. 웹 애플리케이션도 동일하게 main 입니다.


두 번째 import는 Go에서 사용할 라이브러리(패키지)를 호출합니다. 

fmt는 형식화된 I/O를 허용하며 http는 HTTP와 상호작용을 위한 메인 패키지입니다.


이제 handler라는 함수를 만들어 줬습니다.

func handler(writer http.ResponseWriter, request *http.Request) {

fmt.Fprintf(writer, "Hello Tongchun, %s!", request.URL.Path[1:])

}

handler 함수는 최소 두 개의 입력 매개변수가 존재합니다. 첫 번째 매개별수는 ResponseWriter 인터페이스이고 이는 요청 구조(HTTP Request Structure)를 가르킵니다. 그리고 요청으로부터 정보를 취하며, 취한 정보를 통해 HTTP 응답을 만들기도 합니다. 응답할 땐ㄴ ResponseWriter를 사용합니다.

Fprintf 함수는 ResponseWriter로 불립니다. 이때 문자열 형태는 (%s)와 같이 명시합니다.


Go의 모든 프로그램은 실행 가능한 파일로 컴파일합니다. 그래서 반드시 하나의 main 함수가 필요합니다.

func main() {

http.HandleFunc("/", handler)

http.ListenAndServe(":8080", nil)

}

URL 요청(/)이 들어왔을 때 handler 함수를 트리거에 추가합니다. 그 후 포트 8080에서 동작하게 합니다.


이제 first_webapp 프로젝트를 빌드합니다.

$ go install first_webapp/

정상적으로 build 되었다면 bin 폴더에 first_webapp 파일이 생성됩니다.

아래와 같이 실행합니다.

$ ./first_webapp

이제 브라우저를 실행하고 http://localhost:8080으로 접속합니다.

Hello Tongchun, ! 이 보입니다.


handler 함수에 아래와 같이 Fprint로 뿌려주는데 request.URL.Path[1:]이 있습니다.

fmt.Fprintf(writer, "Hello Tongchun, %s!", request.URL.Path[1:])

URL을 파싱해서 뿌려주는 건데요, localhost:8080/ngle/판교/3596으로 호출하면 /ngle/판교/3596 이 붙어서 보이게 됩니다.

여기까지 Go 첫 번째 Hello Tongchun 이었습니다.


'Golang > Web App' 카테고리의 다른 글

Header와 body 확인하기  (1) 2019.02.09
Handler와 Multiplexer 이해하기  (0) 2019.02.07
체이닝 함수  (0) 2019.02.06
핸들링 요청과 핸들링 함수  (0) 2019.02.02
Comments