Golang. Что использовать? http.ServeFile (..) или http.FileServer (..)?

Я немного смущен. Большая часть примеров показывает использование обоих:http.ServeFile(..) а такжеhttp.FileServer(..), но, похоже, они имеют очень близкую функциональность. Также я не нашел информации о том, как установить пользовательский обработчик NotFound.

// This works and strip "/static/" fragment from path
fs := http.FileServer(http.Dir("static"))
http.Handle("/static/", http.StripPrefix("/static/", fs))

// This works too, but "/static2/" fragment remains and need to be striped manually
http.HandleFunc("/static2/", func(w http.ResponseWriter, r *http.Request) {
    http.ServeFile(w, r, r.URL.Path[1:])
})

http.ListenAndServe(":8080", nil)

Я пытался прочитать исходный код, и оба они используютserveFile(ResponseWriter, *Request, FileSystem, string, bool) основная функция. тем не мениеhttp.FileServer вернутьfileHandler со своимServeHTTP() метод и сделать некоторые подготовительные работы перед отправкой файла (например, path.Clean ()).

Так зачем это разделение? Какой метод лучше использовать? И как я могу установить собственный обработчик NotFound, например, когда запрошенный файл не найден?

Ответы на вопрос(2)

Ваш ответ на вопрос