簡體   English   中英

Rails控制器接受json POST請求

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

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