Nhiệm vụ đó rất dễ dàng với gói Golang net / http.
Tất cả những gì bạn cần làm là:
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("./static")))
http.ListenAndServe(":3000", nil)
}
giả sử rằng các tệp tĩnh nằm trong thư mục có tên statictrong thư mục gốc của dự án.
Nếu nó nằm trong thư mục static, bạn sẽ có lệnh index.htmlgọi tệp http://localhost:3000/dẫn đến hiển thị tệp chỉ mục đó thay vì liệt kê tất cả các tệp có sẵn.
Ngoài ra, việc gọi bất kỳ tệp nào khác trong thư mục đó (ví dụ http://localhost:3000/clients.html) sẽ hiển thị tệp đó, được trình duyệt hiển thị đúng cách (ít nhất là Chrome, Firefox và Safari :))
CẬP NHẬT: phân phát tệp từ url khác với "/"
Nếu Bạn muốn cung cấp tệp, hãy nói từ thư mục ./publicdưới url: localhost:3000/staticBạn phải sử dụng chức năng bổ sung : func StripPrefix(prefix string, h Handler) Handlernhư thế này:
package main
import (
"net/http"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./public"))))
http.ListenAndServe(":3000", nil)
}
Nhờ đó, tất cả các tệp của bạn từ ./publicđều có sẵn tronglocalhost:3000/static
Không có http.StripPrefixchức năng, nếu bạn cố gắng truy cập tệp localhost:3000/static/test.html, máy chủ sẽ tìm kiếm nó trong./public/static/test.html
Điều này là do máy chủ coi toàn bộ URI như một đường dẫn liên quan đến tệp.
May mắn thay, nó dễ dàng được giải quyết với chức năng tích hợp.
/static/không phải là mẫu/static?