为了账号安全,请及时绑定邮箱和手机立即绑定

在 Golang 中实现 GitHub 徽章

在 Golang 中实现 GitHub 徽章

Go
烙印99 2021-09-27 15:33:24
我之前也问过这个问题,没有得到满意的答复,所以这次我尽量说得更具体一些。我想在 golang 中实现一个服务器,它以 svg 的形式输出动态状态更新。(想想“构建通过/失败”GitHub 徽章。)目的是应该能够在 GitHub 自述文件中嵌入服务器地址的链接,自述文件应该根据服务器状态自动更新。这是我想出的 golang 代码,但它似乎不适用于 GitHub 主动缓存。我是否需要添加更多 Cache-Control 标头?我需要添加ETag吗?我正在使用以下内容将图像嵌入到 GitHub 自述文件中。[![Mine](http://58dcd0b5.ngrok.com/view)]()理想情况下,我希望每次加载图像时都能看到 GitHub 自述文件更改图像——在两个图像“正确”/“错误”之间切换。(这只是概念证明。)package mainimport (    "log"    "net/http"    _ "time")var mymap map[string][]bytevar state bool = falsefunc viewHandler(w http.ResponseWriter, r *http.Request) {    log.Printf("State %v", state)    state = !state    w.Header().Set("Content-Type", "image/svg+xml")    w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")    if state {        w.Write(mymap["correct"])    } else {        w.Write(mymap["wrong"])    }}func main() {    mymap = make(map[string][]byte)    mymap["correct"] = []byte(`<svg xmlns="http://www.w3.org/2000/svg" width="104" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="a"><rect width="104" height="20" rx="3" fill="#fff"/></mask><g mask="url(#a)"><path fill="#555" d="M0 0h54v20H0z"/><path fill="#4c1" d="M54 0h50v20H54z"/><path fill="url(#b)" d="M0 0h104v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><text x="28" y="15" fill="#010101" fill-opacity=".3">solution</text><text x="28" y="14">solution</text><text x="78" y="15" fill="#010101" fill-opacity=".3">correct</text><text x="78" y="14">correct</text></g></svg>`)    mux := http.NewServeMux()    mux.HandleFunc("/view", viewHandler)    http.ListenAndServe(":8085", mux)}
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信