Home > Backend Development > Golang > Use the net/http.FileServer function to set the specified directory as a static file server

Use the net/http.FileServer function to set the specified directory as a static file server

王林
Release: 2023-07-24 22:57:18
Original
1205 people have browsed it

Use the net/http.FileServer function to use the specified directory as a static file server

In web development, it is often necessary to provide users with access to files in a folder in the form of static files. The net/http package in the Go language provides a convenient FileServer function, which can use the specified directory as a static file server. The following is a simple example to demonstrate how to use this function.

First, we need to build a basic HTTP server. In the Go language, this can be achieved by calling the http.ListenAndServe function:

package main

import (
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        http.FileServer(http.Dir("static")).ServeHTTP(w, r)
    })

    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        panic(err)
    }
}
Copy after login

In the above code, a root route "/" is first defined, under which all HTTP requests will be processed. In the processing function, we called the http.FileServer function to use the directory named "static" as a static file server. Then, call the ServeHTTP method to hand over the processing of the request to FileServer.

We also need to create a folder called "static" and put some static files in it. In this example, we added a file named "index.html" and a file named "style.css" to the "static" folder.

After running the above code, visit http://localhost:8080/ in the browser, and you can see the content in "index.html". If you need to access other files, just add the file name to the URL, such as http://localhost:8080/style.css.

The FileServer function can be used not only to provide static HTML files, but also to provide various types of files such as CSS, JavaScript, and images. Just put the corresponding file into the specified directory and then call the FileServer function.

It should be noted that the FileServer function caches the contents of the file in memory by default to improve performance. In a development environment, this makes sense. But in a production environment, if static files change frequently, you may need to turn off caching. This can be achieved by modifying the UseStaticFiles method of http.FileServer:

func main() {
    fs := http.FileServer(http.Dir("static"))
    http.Handle("/", fs)

    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        panic(err)
    }
}
Copy after login

In the above code, we first create an http.FileServer object and assign it to the variable fs. Then, we register the object by calling the http.Handle method and set the registered route as the root route "/". In this way, we can control whether to enable caching and other functions by modifying the properties of fs.

So far, we have successfully created a static file server based on Go language. We can easily implement this function by calling the FileServer function in the net/http package and the ListenAndServe function in the net/http package. This example simply demonstrates basic usage. In actual use, more customization and optimization can be performed as needed. Interested readers can try to add more functions, such as adding routing verification, modifying the default 404 page, etc. Hope this article helps you!

The above is the detailed content of Use the net/http.FileServer function to set the specified directory as a static file server. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template