我正在开发一个 REST-ful 网络服务,我对 HTTP PUT 方法有疑问。
我想允许人们使用应用程序/表单数据请求正文提交内容。但是,默认响应将在 application/xml 中。
这可以接受吗?
翻转
内容类型仅在单个请求的范围内很重要。他们所做的只是描述正在发送的内容的格式。
您的 Web 服务应提供其能够提供的客户端请求最可接受的响应。客户端请求应包含一个描述可接受内容类型的 Accept 标头。如果您的服务无法在此标头中提供任何内容类型,则返回406 Not Acceptable
在您的情况下,如果您的客户端GET
请求包含application/xml
在 Accept 标头中,那么application/xml
无论对PUT
请求的资源发出任何请求,都可以使用 响应。
编辑:
的状态代码定义包括406 Not Acceptable
以下注释:
注意:HTTP/1.1 服务器可以根据请求中发送的接受头返回不可接受的响应。在某些情况下,这甚至可能比发送 406 响应更可取。鼓励用户代理检查传入响应的标头以确定它是否可以接受。
因此,您可以随时返回application/xml
。
RESTful 服务应该对操作使用正确的 HTTP 方法(GET、HEAD、PUT、DELETE 或 POST),确保任何范围信息都包含在 URI 中,并确保 HTTP 消息信封不包含另一个信封,即 SOAP。
罗伊菲尔丁斯 2000 博士 论文:架构风格和基于网络的软件架构的设计构成了 REST 的基础。