Golang net / http paketi ile bu görev çok kolaydır.
Yapmanız gereken tek şey:
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("./static")))
http.ListenAndServe(":3000", nil)
}
Statik dosyaların static
projenin kök dizininde belirtilen klasörde olduğunu varsayarsak .
Klasörde ise static
, mevcut tüm dosyaları listelemek yerine bu dizin dosyasını oluşturmaya neden olacak index.html
dosya çağrısına http://localhost:3000/
sahip olacaksınız.
Ek olarak, bu klasördeki diğer herhangi bir dosyanın çağrılması (örneğin http://localhost:3000/clients.html
), bu dosyanın tarayıcı tarafından düzgün bir şekilde oluşturulmuş olduğunu gösterecektir (en azından Chrome, Firefox ve Safari :))
GÜNCELLEME: "/" dışında url'den dosya sunma
Dosyaları sunmak istiyorsanız, URL'nin ./public
altındaki klasörden diyelim : Ek işlevi kullanmanızlocalhost:3000/static
gerekir : bunun gibi: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)
}
Bunun sayesinde, tüm dosyalarınız ./public
şu adresten temin edilebilir:localhost:3000/static
http.StripPrefix
İşlev olmadan , dosyaya erişmeye çalışırsanız localhost:3000/static/test.html
, sunucu dosyayı./public/static/test.html
Bunun nedeni, sunucunun tüm URI'yi dosyaya giden göreceli bir yol olarak ele almasıdır.
Neyse ki, yerleşik işlevle kolayca çözülür.
/static/
değil/static
?