【问题标题】:Grape POST request receiving JSON葡萄 POST 请求接收 JSON
【发布时间】:2015-07-02 18:00:10
【问题描述】:

我对葡萄有疑问。 我试图查看他们的文档和谷歌。 我找不到任何关于此的解决方案或示例。

假设我正在向grape的POST请求发送这种格式:

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

问题:

  1. 如何设置 Grape 参数以接收此帖子? 我尝试过这样的事情:
  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 类型的参数? postman 有 3 个选项,分别是 form-data、form-urlencoded 和 raw。我已经尝试过使用表单数据和原始(json)它不适用于原始 json,它给了我一个错误说 不支持请求的内容类型“text/plain”

知道如何解决这些问题吗?

非常感谢

【问题讨论】:

  • 你找到解决办法了吗?

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


【解决方案1】:

回答问题 1: 如果所有参数都是可选的,那么您甚至不需要 params 块。摆脱它,例如,使用 params[:preferences][:play][:weekdays] 访问 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

【讨论】:

    猜你喜欢
    • 2014-12-06
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 2018-10-04
    • 2016-06-12
    • 1970-01-01
    • 2015-05-02
    相关资源
    最近更新 更多