Php &引用;“不支持的媒体类型”;当和邮递员在一起时

Php &引用;“不支持的媒体类型”;当和邮递员在一起时,php,rest,zend-framework2,postman,Php,Rest,Zend Framework2,Postman,我正在使用Zend Framework 2和Zend Framework的Apigility构建一个RESTful API。 为了进行测试,我使用了chrome扩展Postman REST客户端 通过发送表单数据,我可以毫无问题地获取请求和发布请求 但当我尝试执行PUT、PATCH或DELETE请求时,会出现以下错误: { "type":"http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html", "title":"Unsup

我正在使用Zend Framework 2和Zend Framework的Apigility构建一个RESTful API。 为了进行测试,我使用了chrome扩展Postman REST客户端

通过发送表单数据,我可以毫无问题地获取请求和发布请求

但当我尝试执行PUT、PATCH或DELETE请求时,会出现以下错误:

{
    "type":"http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
    "title":"Unsupported Media Type",
    "status":415,
    "detail":"Invalid content-type specified"
}
接受Apigility的Rest服务配置中的白名单:

application/vnd.timber-ms.v1+json, application/hal+json, application/json
内容类型白名单:

application/vnd.timber-ms.v1+json, application/json
响应的内容类型是
application/problem+json

如何修复此问题并成功执行PUT/PATCH请求?
这是邮递员或灵巧性的问题吗?

我在邮递员中遇到了类似的问题,媒体类型的响应不受支持。然而,我使用我公司的API在PUT和POST请求上都经历了这种响应

通过使用另一个类似的Chrome扩展名Advanced REST Client运行相同的请求,我验证了这里的问题是Postman,而不是正在使用的请求/API。我对机智不太熟悉,但很肯定邮递员是罪魁祸首


希望有一个解决方案解决这个问题,因为Postman及其collections功能比Advanced REST Client更易于使用。

当Apigility无法对来自客户端的数据进行反序列化时,您将遇到415个不支持的媒体类型错误。这是最近发生的事

我怀疑您的问题是由于邮递员发送的内容类型造成的。请特别注意为服务列出的内容类型白名单,并确保其中包含您正在发送的内容类型

例如,如果您的服务在内容类型白名单中只有application/json,并且您以x-www-form-urlencoded的形式发送带有postman的PUT/PATCH,那么您将得到一个415错误,该错误为不支持的媒体类型。如果更改postman以发送内容类型为application/json的PUT/PATCH,并且请求正文包含有效的json,则Apigility应该接受该请求

点击“发送”按钮右侧的“预览”按钮,可以查看邮差发送的内容类型。

  • 在“邮递员”上,转到“普通”选项卡(或其他“身份验证”选项卡)并添加标题:

    内容类型application/json(或您需要的任何类型)

    • 确保在raw选项卡上包含json数据 { “类型”:“, “标题”:“不支持的媒体类型”, “地位”:415, “详细信息”:“指定的内容类型无效” }

    • 我也有同样的问题

      我的解决方案是用json格式的[raw]将数据写入[Body]。像这样:

      {"message": "UPDATED First Post!"}
      
      [标题]
      中:

      [KEY]   Content-Type 
      [Value] application/json
      

      问题是我使用的邮递员版本。当我从网站而不是chrome网络商店使用这个版本时,它起了作用。不过,这可能是内容类型的问题。谢谢。