英文:
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)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论