首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >go-chi路由器覆盖中间件来设置内容类型。

go-chi路由器覆盖中间件来设置内容类型。
EN

Stack Overflow用户
提问于 2022-09-07 07:48:27
回答 1查看 263关注 0票数 0

我有一个go API,到目前为止一直返回JSON。我使用chi路由器并在我的主要功能中使用这样的中间件来设置它:

代码语言:javascript
复制
func router() http.Handler {

r := chi.NewRouter()
r.Use(render.SetContentType(render.ContentTypeJSON))
....

现在,我想在某些函数中返回各种类型的文件。如果在路由器功能中设置如下内容类型

代码语言:javascript
复制
func handleRequest(w http.ResponseWriter, r *http.Request) {
    fileBytes, err := ioutil.ReadFile("test.png")
    if err != nil {
        panic(err)
    }
    w.WriteHeader(http.StatusOK)
    w.Header().Set("Content-Type", "application/octet-stream")
    w.Write(fileBytes)
    return
}

这会覆盖此函数的内容类型的呈现设置吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-07 14:21:16

是的,您可以通过简单地设置Content-Type:头来设置内容类型,但是您需要这样做,然后才能像这样调用w.WriteHeader(http.StatusOK)

代码语言:javascript
复制
w.Header().Set("Content-Type", "application/octet-stream")
w.WriteHeader(http.StatusOK)
w.Write(fileBytes)

否则,您将在将标题写入响应后进行更改,并且不会产生任何影响。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73631831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档