gpt4 book ai didi

file - 如何在静态Web服务器中处理JSON?

转载 作者:行者123 更新时间:2023-12-01 22:15:05 25 4
gpt4 key购买 nike

我有一个用Go编写的简单静态Web服务器:

package main

import (
"net/http"
"log"
"flag"
)

type myfs struct {
http.Dir
}

func (m myfs) Open(name string) (result http.File, err error) {
f, err := m.Dir.Open(name)
if err != nil {
return
}

fi, err := f.Stat()
if err != nil {
return
}
if fi.IsDir() {
// Return a response that would have been if directory would not exist:
return m.Dir.Open("does-not-exist")
}
return f, nil
}

func main() {
directory := flag.String("d", "./static", "the directory of static file to host")
handler := http.FileServer(myfs{http.Dir(*directory)})
// http.Handle("/", http.FileServer(http.Dir("./static")))
http.Handle("/", handler)
err := http.ListenAndServe(":8000", nil)
log.Fatal(err)
}

它可以很好地服务所有静态文件,例如css,js,html和json。但是,仅对于JSON文件,我希望Go进入运行时,对其进行解析并呈现自定义开发的HTML代码。当前的处理程序函数是http.FileServer的扩展,我可以在其中登录吗?

最佳答案

如果我了解您,您想要在HTML网页中包含JSON,对吗?如果是这样,请查看go "html/template"软件包。

您可以将html文件修改为模板。

{{define "jsonInHTML"}}

{{ .InsertJSON }}

{{end}}

然后在您的Go服务器处理程序中

func rootHandler(wr http.ResponseWriter,req * http.Request){
tmpl, err := template.New("name").Parse(...)

// Get the JSON form the body
InsertJSN, err := ioutil.ReadAll(req.Body)

// Execute the template passing the http.ResponseWriter, and the
err := template.ExecuteTemplate(wr, "name", InsertJSON)

}

关于file - 如何在静态Web服务器中处理JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60824648/

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