-1

我正在使用http模块。前端开发团队问我什么时候没有结果,发送一个空列表和状态码 204 的响应。我试过这个:

AllPosts  := logic.MergedSearchSearchPost(params)

if len(AllPosts.Posts) == 0 {
    w.WriteHeader(http.StatusNoContent)
    json.NewEncoder(w).Encode(AllPosts)
}

在这种情况下,AllPosts 是这样的:

{
    "total": 0,
    "is_finished": true,
    "query_id": "c2x86XSZaU",
    "posts": null
}

问题是在将状态码设置为 204 后我无法发送任何内容。因此响应为空。我想用 204 状态码发送上面的 AllPosts。有什么办法吗?

4

1 回答 1

2

前端开发团队在没有结果时询问我,发送一个空列表和状态码 204 的响应

这2个相互矛盾。空列表是一些内容。这直接违反了HTTP 标准

204 响应由标头字段后的第一个空行终止,因为它不能包含消息正文。

Go HTTP 库只是不允许您这样做。

于 2021-02-21T09:38:46.020 回答