지난 포스팅


웹 프로그래밍 with Golang 1 - Hello, World!

웹 프로그래밍 with Golang 2 - 템플릿 문법

정적 파일 (Static File)


정적 파일은 원본이 수정되지 않고 그대로 클라이언트에게 제공하는 파일을 의미합니다.

주로 html, css, js를 정적 파일로 사용합니다. 간단한 구조의 CSR 애플리케이션 이라면 정적 호스팅 서버만 있어도 상관 없습니다. (예) github pages

디렉토리 구조


https://i.ibb.co/QvJSWJm/image.png

assets 디렉터리에 있는 파일들을 사용자에게 제공해보겠습니다.

assets 디렉터리에 존재하지만, 사용자는 /static으로 리소스를 요청하게 만들겠습니다.

이처럼 실제 경로와는 다르게 리소스 위치를 설정할 수 있습니다.

소스코드


1
2
3
4
5
6
7
8
9
10
package main

import "net/http"

func main() {
fs := http.FileServer(http.Dir("assets/"))
http.Handle("/static/", http.StripPrefix("/static/", fs))

http.ListenAndServe(":8080", nil)
}

assets 디렉토리를 읽어온 뒤 http.FileServer 메서드를 이용하여 정적 폴더로 지정합니다.

http.Handle 메서드를 이용하여 /static으로 요청하는 경우에 fs에 접근하도록 설정합니다.

이때 http.StripPrefix를 반드시 해야하는데, 만약 그렇지 않으면/static/assets/에서 파일을 찾기 때문에 요청을 수행할 수 없습니다.

http.StripPrefix를 수행한 하고나면 /assets/*에서 파일을 찾아 사용자에게 제공합니다.

index page

{주소}/static에 접속해보면 index 페이지가 출력됩니다.

memo1.txt

{주소}/static/memo1.txt에 접속하면 작성한 텍스트 파일이 그대로 출력됩니다.

참고


https://gowebexamples.com/static-files/