Golang / Gin-gonic:强制POST标头为JSON

时间:2015-06-08 09:07:03

标签: json curl go go-gin

我正在使用Gin-gonic来创建API。所有请求,无论是GET还是POST都是JSON。

我有一个API调用工作正常但我 使用cURL -H "Accept: application/json" -H "Content-type: application/json"添加这些标头,否则POST无法按预期工作。

我尝试将此功能添加为中间件但是虽然它略微改变了标题,但它仍无法按预期工作

func CORSMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {

        c.Writer.Header().Set("Content-Type", "application/json")
        c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
        c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")

    }
}

标题有效(在cURL中添加标题): Accept: application/json Content-type: application/json

标头无法正常工作(cURL中没有标头):Accept: */* Content-Type: application/x-www-form-urlencoded

有没有办法强制标题而不是要求用户提供标题?

1 个答案:

答案 0 :(得分:0)

Content-type是一个导入HTTP标头,让服务器决定如何解析HTTP正文。

有没有办法强制标题而不是要求用户提供标题?

很难说是或否,这取决于您的'用户'。对于curl,它无法猜测HTTP正文格式并自动将Content-Type设置为'applicatoin / json',因此您需要指定Content-Type。对于像jQuery这样的其他人,程序员可以在帖子dataType link中设置jQuery.post( url [, data ] [, success ] [, dataType ] )