我刚开始工作的雅司病,试图创建一些简单的RESTful Web服务,但是我遇到了一个意想不到的问题:我似乎不能当我做了PUT请求访问我的数据。当我尝试使用yaws_api:parse_post功能,我得到以下错误:雅司病和PUT请求
ERROR: Can't parse post body for 'PUT' requests: URL: ...
我写了整个请求,一切看起来是相同的,所以我很困惑。难道我做错了什么? GETs和POSTs正常工作。事实上,我现在处理POST和PUT的唯一区别就是我现在每个人都显示的内容,现在我只是编写测试代码来显示成功。
在此先感谢。
酷!这看起来像我正在寻找的。谢谢! – blockcipher 2011-03-29 12:30:46
我认为'PUT'没有关联的解析方法是很奇怪的,因为[RFC2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html)将'PUT'定义为完整的资源替换。这意味着请求主体可以拥有比“POST”更广泛的媒体类型,这使得提供这样一个分析器几乎是不可能的。从技术上讲,'POST'主体也可以是多种多样的,但实际上由于使用Web表单,'POST'具有'application/x-www-form-urlencoded'媒体类型的数据的可能性更大。 – 2011-04-18 00:52:19
Steve,我很确定你知道RFC2616比我好,但它看起来像一个PUT主要标识包含请求的实体,因此使它比POST更具体。但是,根据RFC2616,POST和PUT具有相同的媒体类型范围,严格来说,'yaws_api:parse_post()'可能会失败,并引发解析错误(我们需要处理)。那么为什么不有一个'yaws_api:parse_put()'方法工作并且出错有点类似呢?根据我的实际经验,大多数PUT请求都具有application/x-www-form-urlencoded数据,就像POST请求一样。 – ettore 2011-12-28 19:39:14