[英]Yaws and PUT requests
我剛開始與Yaws一起嘗試創建一些簡單的RESTful Web服務,但是遇到了一個意料之外的問題:執行PUT請求時,似乎無法訪問我的數據。 當我嘗試使用yaws_api:parse_post函數時,出現以下錯誤:
ERROR: Can't parse post body for 'PUT' requests: URL: ...
我寫出了整個請求,所有內容看起來都一樣,所以我很困惑。 難道我做錯了什么? GET和POST正常工作。 實際上,我現在處理POST和PUT的唯一區別就是我現在為每個顯示的內容,我只是編寫測試代碼以顯示成功。
提前致謝。
我還發現Yaws API中的非POST HTTP方法沒有等效的parse_post / 1。
無論如何,我只是將parse_query / 1用於PUT。 給定一個帶有param1 = abc,Param2 = def的PUT請求:
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控制器中。)
您應該將文件“ yaws.conf”中的參數“ dav = true”添加(或更改)到<server>
部分中,如下所示:
<server ...>
dav = true
</server>
PUT的數據位於#arg.clidata中,就像POST一樣。 在內部,對parse_query和parse_post的調用最終使用相同的函數來解析GET和POST。
因此,需要解決體內的PUT參數
Parsed = yaws_api:parse_query( Arg#arg{ querydata = Arg#arg.clidata } ),
它通過將clidata字段(主體中的數據)復制到querydata字段並像GET一樣對其進行解析來工作。
這假定身體像POST一樣經過了尿烷編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.