首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yaws和PUT请求

Yaws和PUT请求
EN

Stack Overflow用户
提问于 2010-10-14 21:25:07
回答 3查看 920关注 0票数 2

我刚开始使用Yaws试图创建一些简单的RESTful web服务,但是我遇到了一个意想不到的问题:当我做PUT请求时,我似乎无法访问我的数据。当我尝试使用yaws_api:parse_post函数时,我得到以下错误:

代码语言:javascript
复制
ERROR: Can't parse post body for 'PUT' requests: URL: ...

我写出了整个请求,所有内容看起来都一样,所以我非常困惑。我做错了什么吗?GET和POST可以正常工作。事实上,我现在处理POST和PUT的方式之间唯一的区别就是我显示了什么,因为现在我只是在写测试代码来显示成功。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-28 16:16:41

我还发现奇怪的是,Yaws API中没有用于非POST HTTP方法的parse_post/1等效项。

在任何情况下,我都简单地使用parse_query/1作为PUT。给定一个带有param1=abc的PUT请求,param2=def:

代码语言:javascript
复制
index(Args) ->
  case yaws_arg:method(Args) of
  'PUT' ->
    Parsed = yaws_api:parse_query(Args),
    io:format("PUT PARAMS=~p", [Parsed]),
    ....
  'POST' ->
    ....

输出为:

代码语言:javascript
复制
PUT PARAMS=[{"param1","abc"}, {"param2","def"}}]

(上面的示例是在Erlyweb控制器中。)

票数 2
EN

Stack Overflow用户

发布于 2011-07-21 21:11:33

您应该将文件"yaws.conf“中的参数"dav = true”添加(或更改)到<server>部分,如下所示:

代码语言:javascript
复制
<server ...>
        dav = true
</server>
票数 2
EN

Stack Overflow用户

发布于 2013-02-22 23:35:01

PUT的数据位于#arg.clidata中,就像POST一样。在内部,对parse_query和parse_post的调用最终使用相同的函数来解析GET和POST。

因此,在主体中放置参数的变通方法是

代码语言:javascript
复制
Parsed = yaws_api:parse_query( Arg#arg{ querydata = Arg#arg.clidata } ),

它的工作原理是将clidata字段(正文中的数据)复制到querydata字段,并像GET一样解析它。

这假设正文是像POST一样进行urlencoded的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3933588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档