POST 请求负载的内容类型

我在 POST 请求中发送 JSON 正文,但 http.DetectContentType 将其识别为文本/纯文本类型。


我希望能够根据内容类型灵活地处理请求有效负载 - if XML {} if JSON {} else {不处理}


为了实现这种条件处理,我使用 http.DetectContentType 返回请求的内容类型,但它在每个场景中都返回 text/plain。


func Test(w http.ResponseWriter, r *http.Request) *ErrorObject {


        reqBuffer := make([]byte, 512)

        _, err := r.Body.Read(reqBuffer)

        if err != nil {


    return ErrorObject{}.New(1, err, nil)

}


contentType := GetContentType(reqBuffer)

fmt.Printf(contentType)


    if contentType == "application/xml" || contentType == "text/xml" {

    w.Header().Set("Content-Type", "application/xml; charset=UTF-8") ...}

    if contentType == "application/json" || contentType == "text/json" {

    w.Header().Set("Content-Type", "application/json; charset=UTF-8") ... } 

    else return Invalid Request Type error


   func GetContentType(buffer []byte) string {


       fmt.Println(string(buffer))

       contentType := http.DetectContentType(buffer)

       fmt.Printf(contentType)

       return contentType


    }

期望返回函数 - 内容类型为 application/json 但获取 text/plain


使用 POSTMAN 将请求发送到服务器,Body 作为 raw 和 JSON


    {

      "data": [

         {

           "group": "TEST",

           "name": "TEST",

           "released": true,

           "version": 1,

           "teststeps": [

              {

                   "bin": 32,

                   "comment": "PAA",

                   "dataType": "J",

                   "format": "R6.2",

                   "id": "PAA3",

                   "osg": 8,

                   "usg": 0

              }

            ],

           "parameters": [

              {

                  "comment": "test",

                  "description": "test",

                  "format": "R7.0",

                  "id": 1,

                  "teststepId": "PAA",

                  "value": 30,

                  "type": "teststep"

            }

          ]

        }

     ]

  }


青春有我
浏览 211回答 1
1回答

浮云间

我正在使用 http.DetectContentType 返回请求的内容类型,但它在每个场景中都返回 text/plain 。application/json您会发现它根本不关心或类似,并且它返回text/plain任何看起来非二进制的内容(并且之前与 一样不匹配text/html)。换句话说:这是不适合这项工作的工具。正确的方法是客户端使用标头指定发送的内容类型Content-Type,而不是让服务器猜测内容类型。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go