2015-07-02 20 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