2013-07-09 5 views
14

Ich versuche einen HTTP-Server in Go zu starten, der meine eigenen Daten mit meinen eigenen Handlern bedient, aber gleichzeitig möchte ich den Standard-HTTP-FileServer verwenden, um Dateien zu liefern.FileServer-Handler mit einigen anderen HTTP-Handlern

Ich habe Probleme, den Handler des FileServer in einem URL-Unterverzeichnis arbeiten zu lassen.

Dieser Code funktioniert nicht:

package main 

import (
     "fmt" 
     "log" 
     "net/http" 
) 

func main() { 
     http.Handle("/files/", http.FileServer(http.Dir("."))) 
     http.HandleFunc("/hello", myhandler) 

     err := http.ListenAndServe(":1234", nil) 
     if err != nil { 
       log.Fatal("Error listening: ", err) 
     } 
} 

func myhandler(w http.ResponseWriter, req *http.Request) { 
     fmt.Fprintln(w, "Hello!") 
} 

ich das lokale Verzeichnis in localhost zu finden erwartete: 1234/files/aber es gibt einen 404 page not found.

Allerdings, wenn ich die Handler-Adresse des File-Servers zu/ändern, es funktioniert:

 /* ... */ 
     http.Handle("/", http.FileServer(http.Dir("."))) 

Aber jetzt meine Dateien sind zugänglich und sichtbar im Stammverzeichnis.

Wie kann ich es machen, um Dateien von einer anderen URL als root zu liefern?

Antwort

Verwandte Themen