gpt4 book ai didi

go - 使用 Go 的网络服务器,网站的根在哪里映射到文件系统?

转载 作者:IT老高 更新时间:2023-10-28 13:10:25 25 4
gpt4 key购买 nike

Go net/http 网络服务器的文件系统“根”在哪里。它似乎不在可执行文件所在的目录中。“root”是指我将用于imgsrc 属性的目录,没有任何路径。我不打算这样做,但如果我知道它会帮助我理解结构。

最佳答案

简介

转到 net/http包用于提供 Web 服务器功能。这不是一个静态文件服务器,它远不止于此。

没有文件系统“根”的概念。提供的 Web 服务器使用 handlers为映射到 URL 的 HTTP 请求提供服务。处理程序负责处理 HTTP 请求并设置和生成响应。可以注册处理程序,例如与 Handle()HandleFunc()功能。服务器可以用 ListenAndServe() 启动。功能。

阅读 net/http 的包文档了解基本概念并开始使用。它还包含许多小例子。

博客文章 Writing Web Applications也很有帮助。

静态文件服务器

但是,提供了静态文件服务器或“文件系统”功能,有一个 FileServer() http 包中的函数,它返回一个为静态文件提供服务的 Handler。您可以指定“根”文件夹作为 FileServer() 的参数来提供静态文件。

如果您将绝对 路径传递给FileServer(),那么毫无疑问这意味着什么。如果您提供 relative 路径,它总是在 currentworking 目录的上下文中解释。默认情况下,这是您启动应用程序的文件夹(执行 go run ... 命令或编译的可执行二进制文件时所在的文件夹)。

例子:

http.Handle("/", http.FileServer(http.Dir("/tmp")))

这将设置一个处理程序来提供从文件夹 /tmp 映射到根 URL / 的文件。例如,对 GET 请求 "/mydoc.txt" 的响应将是 "/tmp/mydoc.txt" 静态文件。

完整申请:

package main
import (
"log"
"net/http"
)
func main() {
// Simple static webserver:
http.Handle("/", http.FileServer(http.Dir("/tmp")))
log.Fatal(http.ListenAndServe(":8080", nil))
}

您可以使用 StripPrefix() 进行更复杂的映射。功能。示例:

// To serve a directory on disk (/tmp) under an alternate URL
// path (/tmpfiles/), use StripPrefix to modify the request
// URL's path before the FileServer sees it:
http.Handle("/tmpfiles/",
http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))

关于go - 使用 Go 的网络服务器,网站的根在哪里映射到文件系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28745161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com