当前位置: 首页 > 面试题库 >

如何使用Go Web服务器提供静态html文件?

陈和裕
2023-03-14
问题内容

如何使用Go Web服务器提供index.html(或其他静态HTML文件)?

我只想要一个基本的静态HTML文件(例如,一篇文章),就可以从Go
Web服务器上提供该文件。HTML应该可以在go程序之外进行修改,就像使用HTML模板时一样。

这是我的Web服务器,仅托管硬编码文本(“ Hello world!”)。

package main

import (
  "fmt"
  "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
  fmt.Fprintf(w, "Hello world!")
}

func main() {
  http.HandleFunc("/", handler)
  http.ListenAndServe(":3000", nil)
}

问题答案:

使用Golang net / http包,该任务非常容易。

您需要做的只是:

package main

import (
        "net/http"
)

func main() {
        http.Handle("/", http.FileServer(http.Dir("./static")))
        http.ListenAndServe(":3000", nil)
}

假设静态文件位于static项目根目录中命名的文件夹中。

如果在folder中static,您将进行index.html文件调用http://localhost:3000/,这将导致呈现该索引文件,而不是列出所有可用文件。

此外,调用该文件夹中的任何其他文件(例如http://localhost:3000/clients.html)将显示该文件,该文件已由浏览器正确渲染(至少是Chrome,Firefox和Safari
:)。

更新:通过不同于“ /”的网址提供文件

如果您想为文件,从文件夹说./public下网址: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功能,如果您尝试访问file
localhost:3000/static/test.html,服务器将在其中查找./public/static/test.html

这是因为服务器将整个URI视为文件的相对路径。

幸运的是,使用内置函数可以轻松解决该问题。



 类似资料:
  • 问题内容: 我正在尝试提供静态html文件,但返回500错误(.py和模板目录上有editor.html的副本),这是我尝试过的全部操作: 这是响应: 问题答案: 将其简化为最简单的方法: 将静态资产放入子文件夹。 将Flask设置为默认值,也不要设置为默认值。 通过预配置访问静态内容以验证文件是否有效 如果仍然要重用静态文件,请使用,而不要使用斜杠: 这将 直接 在文件夹内查找文件。 假定您将上

  • 问题内容: 这个问题已经被回答了好几次了,我已经看到了几乎所有相关的帖子,但是无法加载CSS文件。我在我的项目中有以下结构:中,我有以下代码: 在urls.py中,我有以下代码: 我在模板中使用它 我在做什么错?我应该做什么?例如应该在中添加任何内容?或在的设置中?请假设我是一个绝对的初学者。我真的需要一个答案。谢谢。 问题答案: 什么都不做的装饰器类如下所示: 然后您可以正常应用它:

  • 问题内容: 我正在探索Go的深度,并且我一直在尝试编写一个简单的Web应用程序来围绕所有内容。我正在尝试服务React.js应用程序。 下面是Go服务器的代码。我有默认的服务路线,效果很好。我正在努力允许将静态文件提供给该索引文件。尽管我需要静态提供JavaScript / CSS / Media文件,但我允许React App自己进行客户端路由。 例如,我需要能够将文件提供给React应用程序才

  • 我提供了一些静态文件,像图像和字体,没有任何问题。当我尝试对PDF文件做同样的操作时,我得到一个错误。 ./src/views/default/components/footer.js中出错 C:\resurs\repos\frontend\src\views\default\components\footer.js 5:17错误解析导入模块'src/includes/anvandaravtal_

  • 问题内容: 我有一个具有以下结构的Web应用程序: 我已经设法使用nginx和wsgi运行Web应用程序,但是问题是没有提供静态文件,我的意思是,当我转到它们的URL时,服务器找不到它们。它给我404。 这是我的nginx配置文件部分: 缺少什么吗? 问题答案: 将此添加到你的nginx配置 用你应用的绝对路径替换时,你应该注意它不包含静态目录,并且其中的所有内容都将存储在中。

  • 我从Apache切换到Nginx,使用apache,皮肤文件夹中的所有静态文件(图像、css、javascript)都直接由Apache提供服务。 示例: 我读了一些关于Nginx和Plone的文档,但我没有看到。下面是Plone.orgconf的例子:https://github.com/plone/plone-org-nginx/blob/master/nginx.conf 所以,我的问题是: