2015-07-02 107 views
0

我有葡萄問題。 我試圖查看他們的文檔和谷歌周圍。 我找不到任何有關此問題的解決方案或示例。葡萄POST請求接收JSON

讓說我送這種格式的葡萄的POST請求:

{ 
    "preferences": { 
     "play": { 
      "weekdays": "5", 
      "weekend": "8" 
     }, 
     "grow": { 
      "weekdays": "4", 
      "weekend": "8" 
     } 
    } 
} 

問題:

  1. 如何設置的葡萄PARAMS獲得這個職位? 我已經試過這樣的事情:
params do 
    optional :preferences, type: Hash do 
     optional :play do 
     optional :weekdays 
     optional :weekend 
     end 
     optional :grow, type: Hash do 
     optional :weekdays 
     optional :weekend 
     end 
    end 
    end 
  • 我使用郵遞員做POST我的鉻。我的問題是,如何設置哈希類型的參數?郵遞員有三種選項,分別是表單數據,表單urlencoded和raw。我曾嘗試與表單數據和原始(JSON)它不生JSON的工作,它給了我一個錯誤說 請求的內容類型「text/plain的」不支持
  • 任何想法如何解決這些問題?

    非常感謝您

    +0

    您是否找到解決方案? – lgx

    回答

    0

    回答問題1:如果所有的參數都是可選的,那麼你甚至都不需要params塊。擺脫它,例如,使用params[:preferences][:play][:weekdays]來訪問weekdays屬性。只需使用相同的想法來訪問其他值。

    答題2:在郵差,使用RAW但不要忘了標題Content-Type設置爲application/json。我已經編寫了下面的代碼來演示這個例子。

    require 'grape' 
    
    class API < Grape::API 
        version 'v1', :using => :header, :vendor => 'alienlabz', :format => :json 
        format :json 
        resource :preferences do 
         post do 
          puts params[:preferences][:play][:weekdays] 
         end 
        end 
    end 
    
    run API