- Published on
Go #3 웹 애플리케이션 만들기
- Authors
- Name
- 신주용
공식 문서1를 따라 Go로 웹 애플리케이션을 만들어 봅시다.
새 디렉토리를 만들고 모듈을 설정합니다.
필요한 패키지를 import하고,
Page
자료구조를 만듭니다.Page
는Title
과Body
로 구성됩니다.Body
는string
이 아닌[]byte
, 바이트 슬라이스 타입으로 선언했는데,io
라이브러리가[]byte
타입을 사용할 것이기 때문입니다.위에서 선언한
Page
는 데이터가 메모리에 어떻게 저장될지를 나타냅니다. 이를 파일로 만들어 스토리지에 저장하기 위해save()
메소드를 만듭니다.save
메소드는 Page의 포인터(p *Page)
를p
라는 이름으로 받고, 파라미터는 없고,error
를 반환합니다.WriteFile
은 파일 이름, 파일에 쓸 내용, permission을 인자로 받고, 처리 과정에 에러가 발생하면error
를, 문제가 없다면nil
을 반환합니다.페이지를 스토리지에 저장했으니 불러오는 함수도 만들어 봅니다.
loadPage
는 페이지 제목을 파라미터로 받아서ReadFile
을 실행합니다.ReadFile
은 값 2개를 반환합니다. 첫 번째는[]byte
타입의 값이고, 두 번째는error
입니다. 파일을 정상적으로 불러온다면 첫 번째로 파일 내용이 반환되고, 두 번째는nil
일 것입니다.
하지만, 에러가 발생한다면 두 번째 반환값이nil
이 아닐 것입니다. 이 경우 if문을 사용해 핸들링 합니다.
(Go는try-catch
문이 없고,if err != nil
을 사용2합니다.)main
함수를 만들고 테스트 해봅시다. 전체 코드는 다음과 같습니다.지금까지 한 건 웹사이트가 아닙니다. 이제부터 Go로 웹서버를 만들 수 있는
net/http
패키지를 다뤄봅시다.main
함수는http.HandleFunc
을 호출해/view/
라는 url을viewHandler
가 처리하도록 합니다.
그 다음http.ListenAndServe
를 호출해 서버를 실행합니다. 이 때, 포트 번호를 지정할 수 있습니다.r.URL.Path
는 요청 URL의 경로를 나타냅니다.[len("/view/"):]
는 슬라이스를 만드는 코드입니다.r.URL.Path
에서/view/
다음부터 끝까지 해당하는 값을title
변수로 사용한다는 뜻입니다.서버를 실행해봅시다.
go run wiki.go
를 실행하고 http://localhost:8080/view/TestPage 로 접속합니다. 그러면 아까 생성했던TestPage.txt
가 웹 브라우저에 보일 것입니다.
Footnotes
"Writing Web Applications". golang.org. https://golang.org/doc/articles/wiki/ (accessed Feb. 26, 2021). ↩
Andrew Gerrand. "Error handling and Go". blog.golang.org. https://blog.golang.org/error-handling-and-go (accessed Feb. 26, 2021). ↩