簡體   English   中英

偏航和PUT請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM