列出更新后的文件而无需再次使用 go build
List the updated files without using go build again
我刚刚开始使用 Go。我有一个关于 gorilla/mux.
的问题
我正在尝试列出目录中的文件;并且响应将从 GET 请求发回以列出文件。
现在,当我在目录中创建一个新文件时; GET 请求未列出新文件。
我知道我需要 运行 重新构建。我可以不用重新构建它吗?
type Images struct {
Image string `json:"image"`
Path string `json:"path"`
Timestamp string `json:"timestamp"`
Labels string `json:"labels"`
Version string `json:"version"`
}
var images []Images
func getImages(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(images)
}
func main() {
r := mux.NewRouter()
files, err := ioutil.ReadDir(os.Args[1])
if err != nil {
log.Fatal(err)
}
for _, file := range files {
images = append(images, Images{Image: file.Name(), Path: os.Args[1]})
}
fmt.Println(images)
// Route handles & endpoints
r.HandleFunc("/images", getImages).Methods("GET")
log.Fatal(http.ListenAndServe(":8080", r))
}
应用程序在启动时读取文件列表。要更新文件列表,您必须重新启动应用程序。您不需要 运行 go build
来获取更新的文件列表。
要获取每个请求的 up-to-date 文件列表,请读取请求处理程序函数中的文件列表:
func getImages(w http.ResponseWriter, r *http.Request) {
files, err := ioutil.ReadDir(os.Args[1])
if err != nil {
http.Error(w, "Internal server error", 500)
return
}
var images []Images
for _, file := range files {
images = append(images, Images{Image: file.Name(), Path: os.Args[1]})
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(images)
}
从 main()
和 images
package-level 变量中删除相应的代码。
我刚刚开始使用 Go。我有一个关于 gorilla/mux.
的问题我正在尝试列出目录中的文件;并且响应将从 GET 请求发回以列出文件。 现在,当我在目录中创建一个新文件时; GET 请求未列出新文件。 我知道我需要 运行 重新构建。我可以不用重新构建它吗?
type Images struct {
Image string `json:"image"`
Path string `json:"path"`
Timestamp string `json:"timestamp"`
Labels string `json:"labels"`
Version string `json:"version"`
}
var images []Images
func getImages(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(images)
}
func main() {
r := mux.NewRouter()
files, err := ioutil.ReadDir(os.Args[1])
if err != nil {
log.Fatal(err)
}
for _, file := range files {
images = append(images, Images{Image: file.Name(), Path: os.Args[1]})
}
fmt.Println(images)
// Route handles & endpoints
r.HandleFunc("/images", getImages).Methods("GET")
log.Fatal(http.ListenAndServe(":8080", r))
}
应用程序在启动时读取文件列表。要更新文件列表,您必须重新启动应用程序。您不需要 运行 go build
来获取更新的文件列表。
要获取每个请求的 up-to-date 文件列表,请读取请求处理程序函数中的文件列表:
func getImages(w http.ResponseWriter, r *http.Request) {
files, err := ioutil.ReadDir(os.Args[1])
if err != nil {
http.Error(w, "Internal server error", 500)
return
}
var images []Images
for _, file := range files {
images = append(images, Images{Image: file.Name(), Path: os.Args[1]})
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(images)
}
从 main()
和 images
package-level 变量中删除相应的代码。