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 static
trong 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.html
gọ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 ./public
dưới url: localhost:3000/static
Bạn phải sử dụng chức năng bổ sung : func StripPrefix(prefix string, h Handler) Handler
như 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.StripPrefix
chứ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
?