งานนั้นง่ายมากด้วยแพ็คเกจ 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
?