Це завдання дуже просто за допомогою пакета 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?