为了账号安全,请及时绑定邮箱和手机立即绑定

POST 请求负载的内容类型

POST 请求负载的内容类型

Go
青春有我 2023-06-26 16:24:52
我在 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"            }          ]        }     ]  }
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

我正在使用 http.DetectContentType 返回请求的内容类型,但它在每个场景中都返回 text/plain 。

application/json您会发现它根本不关心或类似,并且它返回text/plain任何看起来非二进制的内容(并且之前与 一样不匹配text/html)。

换句话说:这是不适合这项工作的工具。正确的方法是客户端使用标头指定发送的内容类型Content-Type,而不是让服务器猜测内容类型。


查看完整回答
反对 回复 2023-06-26
  • 1 回答
  • 0 关注
  • 210 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信