json - Golang/Gin-gonic : Force POST headers to JSON

标签 json curl go go-gin

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

我有一个可以正常工作的 API 调用,但我必须通过 cURL -H "Accept: application/json"-H "Content-type: application/json" 否则 POST 不会按预期工作。

我尝试将此函数添加为中间件,但尽管它稍微更改了 header ,但仍无法按预期工作

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")

    }
}

工作时的 header (在 cURL 中添加 header ): 接受:application/json 内容类型:application/json

当它不起作用时的标题(cURL 中没有标题):Accept: */* Content-Type: application/x-www-form-urlencoded

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

最佳答案

Content-type 是一个导入的 HTTP header ,让服务器决定如何解析 HTTP 主体。

有没有办法强制 header 而不是要求用户提供它们?

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

关于json - Golang/Gin-gonic : Force POST headers to JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30705110/

相关文章:

Godep 移除所有依赖

android - 使用 gson 反序列化 NullPointerException

javascript - 使用 CoAP 向 CoRE 资源目录发送 PUT 请求

java - Jackson - 接受对象属性上的空字符串

mongodb - 无法在 Ubuntu 18.4LTS 上安装 CURL(需要 libcurl4),但安装它会删除 libcurl3,因此 mongo 无法正常工作

bash - curl 并运行 python 脚本

php - Firebase 云消息传递 : Add a device to a topic using curl command

go - 如何在 Goreleaser 中为每个目标设置 `-ldflags` 值?

mongodb - 使用 mGo 导入备份集合

c# - 有什么方法可以对 List<T> 的子类进行 JSON.NET 序列化,该子类也具有额外的属性?