이 작업은 Golang net / http 패키지를 사용하면 매우 쉽습니다.
당신이해야 할 일은 :
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("./static")))
http.ListenAndServe(":3000", nil)
}
정적 파일이 static
프로젝트의 루트 디렉토리에 이름이 지정된 폴더에 있다고 가정합니다 .
폴더 static
에 있으면 사용 가능한 모든 파일을 나열하는 대신 해당 인덱스 파일을 렌더링하는 index.html
파일 호출 http://localhost:3000/
이 있습니다.
또한 해당 폴더의 다른 파일 (예 http://localhost:3000/clients.html
:)을 호출하면 해당 파일이 브라우저에 의해 올바르게 렌더링 된 것으로 표시됩니다 (최소한 Chrome, Firefox 및 Safari :).
업데이트 : "/"와 다른 URL에서 파일 제공
당신은 파일을 제공 할 경우, 폴더에서 말하는 ./public
URL에서 : localhost:3000/static
당신이해야 할 추가 기능을 사용 : func StripPrefix(prefix string, h Handler) Handler
다음과 같이 :
package main
import (
"net/http"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./public"))))
http.ListenAndServe(":3000", nil)
}
덕분에의 모든 파일을 다음에서 ./public
사용할 수 있습니다.localhost:3000/static
http.StripPrefix
기능이 없으면 파일에 액세스하려고 localhost:3000/static/test.html
하면 서버에서 파일 을 찾습니다../public/static/test.html
이는 서버가 전체 URI를 파일에 대한 상대 경로로 취급하기 때문입니다.
다행히도 내장 함수로 쉽게 해결할 수 있습니다.
/static/
아닌 이유는/static
무엇입니까?