GoLang Gin框架的状态码不带消息体。

huangapple go评论93阅读模式
英文:

GoLang Gin Framework Status Code Without Message Body

问题

我正在使用GoLang和Gin框架。

我需要以204响应代码回应REST API调用,但不包含消息体。

如何正确地实现这个功能?

通过查看源代码,我找到了以下内容:

c.JSON(204, "")

但是服务器在这种情况下会抛出错误:

错误 #01: http: 请求方法或响应状态码不允许包含消息体
元数据: []

有什么想法吗?

英文:

I'm using GoLang and Gin Framework.

I need to respond for REST API call with 204 response code without message body.

How it is to do properly?

What I could find by digging the source code

c.JSON(204, "")

But server throws error at such case:

Error #01: http: request method or response status code does not allow body
Meta: []

Any ideas?

答案1

得分: 16

根据@depado的评论,c.Status(http.StatusNoContent)是实现这一目标的最简单方法。适用于gin v1.6.3

英文:

adding on @depado comments,

c.Status(http.StatusNoContent) is the simplest way to achieve this.
Works with gin v1.6.3

答案2

得分: 15

你可以使用c.AbortWithStatus(204),但需要注意的是,当你使用abort时,该请求的其他待处理程序将不会被调用。

或者,你可以使用以下方式:

c.Writer.WriteHeader(204)

这样可以让你的程序继续正常运行(但要确保不再写入其他内容)。

英文:

You could use c.AbortWithStatus(204), with the one caveat that when you use abort, the rest of pending handlers will never be called for that request.

Or, you could do:

c.Writer.WriteHeader(204)

and let your program continue normally (but making sure not to write out anything else)

答案3

得分: 2

到目前为止,函数Abort的原型

 func (c *Context) Abort()

你可以使用AbortWithStatus来代替c.AbortWithStatus(204),其原型是

 func (c *Context) AbortWithStatus(code int)
英文:

up to now, the function Abort's prototype is

 func (c *Context) Abort()

you can use AbortWithStatus instead c.AbortWithStatus(204), whose prototype is

 func (c *Context) AbortWithStatus(code int)

huangapple
  • 本文由 发表于 2014年10月24日 04:54:40
  • 转载请务必保留本文链接:https://go.coder-hub.com/26537299.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定