Go에서 루트의 홈페이지 및 정적 콘텐츠 제공
Go에서는 특정 항목을 처리하면서 정적 콘텐츠와 루트 디렉터리의 홈페이지를 모두 제공합니다. URL에는 맞춤형 접근 방식이 필요합니다. 기본적으로 루트 경로("/")에 대한 핸들러를 등록하면 동일한 디렉터리에서 정적 콘텐츠를 제공하는 것과 충돌합니다.
이 문제를 해결하기 위한 한 가지 옵션은 다음이 있는지 확인하는 대체 FileServer 구현을 사용하는 것입니다. 파일을 제공하기 전에 파일을 삭제하세요. 파일이 없으면 홈페이지 핸들러를 따르거나 404 오류를 반환할 수 있습니다.
다음 코드는 이 접근 방식을 보여줍니다.
package main import ( "fmt" "net/http" "os" ) func HomeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "HomeHandler") } func exists(path string) bool { _, err := os.Stat(path) return !os.IsNotExist(err) } func FileServerWithFallback(dir string) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { path := dir + r.URL.Path if exists(path) { http.ServeFile(w, r, path) return } } } func main() { http.HandleFunc("/", HomeHandler) // homepage http.Handle("/static/", FileServerWithFallback("./static")) http.ListenAndServe(":8080", nil) }
이 코드에서 존재 함수는 파일이 특정 경로에 존재합니다. FileServerWithFallback 핸들러는 제공된 디렉터리에 파일이 있는 경우 파일을 제공합니다. 그렇지 않으면 요청이 홈페이지 핸들러로 진행되도록 허용합니다.
이 사용자 정의된 FileServer 구현을 사용하면 홈페이지 핸들러가 예상대로 호출되도록 허용하면서 루트 디렉터리에서 정적 콘텐츠를 제공할 수 있습니다.
위 내용은 Go의 루트 디렉터리에서 홈페이지와 정적 콘텐츠를 모두 제공하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!