与Postman一起投入Apigility时“不支持的媒体类型”

时间:2014-03-21 11:09:01

标签: php rest zend-framework2 postman

我正在使用Zend Framework 2和Zend Framework的Apigility构建RESTful API。 为了测试,我使用chrome扩展Postman REST-Client。

我可以毫无问题地发送表单数据,从而可以毫无问题地执行GET请求和POST请求。

但是当我尝试执行PUT,PATCH或DELETE请求时,我收到以下错误:

{
    "type":"http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
    "title":"Unsupported Media Type",
    "status":415,
    "detail":"Invalid content-type specified"
}

在Rest-Service-Config of Apigility中接受白名单:

application/vnd.timber-ms.v1+json, application/hal+json, application/json

内容类型白名单:

application/vnd.timber-ms.v1+json, application/json

回复的内容类型为application/problem+json

我该怎么做才能解决这个问题并成功完成PUT / PATCH请求? 这是Postman或Apigility的问题吗?

4 个答案:

答案 0 :(得分:8)

当Apigility无法反序列化来自客户端的数据时,您收到415不支持的媒体类型错误。最近called out中的documentation为<{3}}。

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

例如,如果您的服务在Content-Type白名单中只有application / json,并且您使用postman发送PUT / PATCH为x-www-form-urlencoded,则会收到415错误的Unsupported Media Type。如果您更改邮递员以使用内容类型的application / json发送PUT / PATCH并且请求正文包含有效的JSON,则Apigility应接受该​​请求。

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

答案 1 :(得分:1)

我在Postman中遇到类似的问题,媒体类型响应不受支持。但是,我使用我公司的API在PUT和POST请求中都遇到了这种响应。

我通过另一个名为Advanced REST Client的类似Chrome扩展程序运行相同的请求,验证了Postman是问题,而不是正在使用的请求/ API。我不熟悉Apigility,但很确定邮差是这里的罪魁祸首。

希望有一个解决此问题的方法,因为Postman及其集合功能比高级REST客户端更容易使用。

答案 2 :(得分:0)

    postman上的
  • 转到普通标签页(或其他auths标签页)并添加标题:

    Content-Type application / json(或您需要的任何类型)

    • 确保原始选项卡上包含json数据 { &#34;类型&#34;:&#34; http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html&#34 ;, &#34;标题&#34;:&#34;不支持的媒体类型&#34;, &#34;状态&#34;:415, &#34; detail&#34;:&#34;指定的内容类型无效&#34; }

答案 3 :(得分:0)

我遇到了同样的问题,

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

{"message": "UPDATED First Post!"}

[Headers]中:

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