我刚开始使用Yaws试图创建一些简单的RESTful web服务,但是我遇到了一个意想不到的问题:当我做PUT请求时,我似乎无法访问我的数据。当我尝试使用yaws_api:parse_post函数时,我得到以下错误:
ERROR: Can't parse post body for 'PUT' requests: URL: ...我写出了整个请求,所有内容看起来都一样,所以我非常困惑。我做错了什么吗?GET和POST可以正常工作。事实上,我现在处理POST和PUT的方式之间唯一的区别就是我显示了什么,因为现在我只是在写测试代码来显示成功。
提前谢谢。
发布于 2011-03-28 16:16:41
我还发现奇怪的是,Yaws API中没有用于非POST HTTP方法的parse_post/1等效项。
在任何情况下,我都简单地使用parse_query/1作为PUT。给定一个带有param1=abc的PUT请求,param2=def:
index(Args) ->
case yaws_arg:method(Args) of
'PUT' ->
Parsed = yaws_api:parse_query(Args),
io:format("PUT PARAMS=~p", [Parsed]),
....
'POST' ->
....输出为:
PUT PARAMS=[{"param1","abc"}, {"param2","def"}}](上面的示例是在Erlyweb控制器中。)
发布于 2011-07-21 21:11:33
您应该将文件"yaws.conf“中的参数"dav = true”添加(或更改)到<server>部分,如下所示:
<server ...>
dav = true
</server>发布于 2013-02-22 23:35:01
PUT的数据位于#arg.clidata中,就像POST一样。在内部,对parse_query和parse_post的调用最终使用相同的函数来解析GET和POST。
因此,在主体中放置参数的变通方法是
Parsed = yaws_api:parse_query( Arg#arg{ querydata = Arg#arg.clidata } ),它的工作原理是将clidata字段(正文中的数据)复制到querydata字段,并像GET一样解析它。
这假设正文是像POST一样进行urlencoded的。
https://stackoverflow.com/questions/3933588
复制相似问题