Grape POST请求接收JSON

时间:2015-07-02 18:00:11

标签: ruby-on-rails-4 grape grape-api

我遇到葡萄问题。 我试图调查他们的文档并谷歌周围。 我找不到任何有关此问题的解决方案或样本。

假设我将这种格式发送到葡萄的POST请求中:

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

问题:

  1. 如何设置Grape params才能收到此帖子? 我尝试过这样的事情:
  2.   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
    
    1. 我正在使用邮递员在我的Chrome上进行POST。我的问题是,我如何设置Hash类型的参数?邮递员有3个选项,分别是form-data,form-urlencoded和raw。我试过使用form-data和raw(json)它对原始json不起作用,它给了我一个错误说 不支持请求的内容类型“text / plain”
    2. 我知道如何解决这些问题?

      非常感谢

1 个答案:

答案 0 :(得分:0)

回答问题1:如果所有参数都是可选的,那么您甚至不需要params块。摆脱它,例如,使用params[:preferences][:play][:weekdays]来访问工作日属性。只需使用相同的想法来访问其他值。

回答问题2:在Postman上,使用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