2021. 12. 30. 09:36ㆍProgramming/JAVA, C++, Go, Rust
- 목차
고 언어로 웹 서버 만들기 시작
고 언어를 통해 간단히 web server를 만다는 법에 대해서 설명해 드리겠습니다.
우선 HTTP protocol 처리를 위해 "net/http"를 먼저 import 합니다. 또한 log 출력을 위해 fmt과 log도 import 합니다.
import (
"net/http"
"fmt"
"log"
)
이후 다음과 같이 main 함수를 작성합니다.
func handleRoot(res_writer http.ResponseWriter, req *http.Request) {
fmt.Fprintf(res_writer, "welcome here %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", handleRoot)
res := http.ListenAndServe(":5000", nil)
log.Fatal(res)
}
main 함수에서는 가장 먼저 "/" 주소로 접근하는 요청을 처리하는 handler를 지정합니다. 위 예제에서는 "handleRoot"라는 handler functionl을 지정 했습니다.
이후 ListenAndServe를 통해 8080 port에 대해 HTTP listening을 시작합니다. 이미 HandleFunc를 통해 handler를 등록했기에 Listen 수행 시에는 handler를 지정하지 않고 nil을 설정 했습니다.
ListenAndServe는 오류 발생 시 리턴하게 되기에, log를 통해 오류 메시지를 출력합니다.
func handleRoot(res_writer http.ResponseWriter, req *http.Request) {
fmt.Fprintf(res_writer, "welcome here %s!", r.URL.Path[1:])
}
handleRoot의 parameter는 다음과 같습니다.
- http.ResponseWriter
- HTTP response 내용이 담겨 있음
- http.Request
- HTTP 요청 정보가 담겨 있음
r.URL.Path는 접속한 URL 정보를 담고 있으며 [1:]로 slicing 하는 이유는 첫 번째 문자인 '/'는 제외하고 출력하기 위해서 입니다. "localhost:8080/test"로 접속 요청 시, "welcome here test!"를 출력하게 됩니다.
웹 서버 실행
...> go run test.go
위 코드에 대한 실행 방법은 간단합니다. (위 코드를 담고 있는 file의 name을 test.go라고 가정합니다)
실행 후 web browser를 통해 해당 URL에 접속하면 다음과 같이 welcome message가 화면에 표시되는 것을 확인할 수 있습니다.
이번에는 /이후에 test를 추가로 입력하여 접속해 봅니다.
'Programming > JAVA, C++, Go, Rust' 카테고리의 다른 글
Go 언어 변수 선언 (0) | 2022.01.09 |
---|---|
Flutter vs. React Native (0) | 2021.12.30 |
go generic (고 언어 제네릭) (0) | 2021.12.22 |
Go empty interface (0) | 2021.12.09 |
Golang slice, map, struct (0) | 2021.11.09 |