[英]Rails controller accept json POST request
如何設置我的rails項目以接受json HTTP POST請求? 我是rails的初學者並嘗試了不同的東西,但無法捕獲任何數據。 到目前為止,這是我的控制器方法。
def flowplayer_callback
pars = params[:video]
end
我在routes.rb文件中有這個:
post "flowplayer_callback" => "videos#flowplayer_callback", :via => [ :post]
傳入的json看起來與此類似:
{"video": { "id": 85067, "seconds": 48, "failed": 0, "encodings": [{ "id": 263445, "duration": 23 }, { "id": 263446, "duration": 23 }] }
編輯:我的問題是設計寶石嘗試在之前的操作中驗證用戶。
如果請求的Content-Type
標頭設置為application/json
,則Rails會自動將參數加載到params哈希中。 在這里閱讀更多相關信息:
http://edgeguides.rubyonrails.org/action_controller_overview.html#json-parameters
此外,除非您已禁用它,否則您將使用強參數來阻止您不允許的任何內容。
您應該在控制器操作中允許您願意接受的內容(或者如果您需要在多個位置允許它們,則設置私有方法,例如創建和更新方法):
def flowplayer_callback
pars = params.require(:video).permit(:id, :seconds, encodings: [:id, :duration])
end
我不確定你的:failed
數據:failed
部分是怎么回事,因為你的哈希值有點壞了。 但是,你應該了解你需要做什么。
在此處閱讀有關強參數的更多信息 - http://edgeguides.rubyonrails.org/action_controller_overview.html#strong-parameters
可能是您需要在發出請求之前設置正確的標頭,以便rails控制器接受json響應。
Content-Type: application/json
Accept: application/json
這個SO響應有更多細節https://stackoverflow.com/a/4914925
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.