我是使用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的问题吗?
当Apigility无法反序列化来自客户端的数据时,您将收到415不支持的媒体类型错误.最近在文档中提到了这一点.
我怀疑你的问题是由邮递员发送的内容类型引起的.请特别注意为服务列出的Content-Type白名单,并确保它包含您要发送的内容类型.
例如,如果您的服务在Content-Type白名单中只有application/json,并且您使用postman发送PUT/PATCH为x-www-form-urlencoded,则会收到415错误的Unsupported Media Type.如果您更改邮递员以使用内容类型的application/json发送PUT/PATCH并且请求正文包含有效的JSON,则Apigility应接受该请求.
您可以通过单击"发送"按钮右侧的"预览"按钮来检查邮递员发送的内容类型.