簡體   English   中英

如何構建Rails POST方法的郵遞員請求

[英]How to build postman request for Rails POST method

無論我如何格式化此請求的原始部分,我都無法避免下面的解析錯誤。

我有一個帶有傳遞規范的create方法的Rails API,以說明控制器消息是合理的:

describe "POST power_up" do

    let!(:client) { FactoryGirl.create :client, name: "joe", auth_token: "asdfasdfasdfasdfasdfasdf" }

    it "should create and save a new Power Up" do

      expect { post :create, format: :json, power_up: FactoryGirl.attributes_for(:power_up) }.to change(V1::PowerUp, :count).by(1)
    end

  end

我正在使用Postman嘗試POST。 無論我嘗試什么,我都會收到錯誤:

Started POST "/v1/power_ups.json" for 127.0.0.1 at 2014-08-30 18:05:29 -0400
Error occurred while parsing request parameters.
Contents:

{
  'name': 'foo',
  'description': 'bar'
}


ActionDispatch::ParamsParser::ParseError (795: unexpected token at '{
  'name': 'foo',
  'description': 'bar'
}

郵差要求設置:

郵遞員請求的屏幕上限

我也嘗試過:

{
  'power_up': {
    'name': 'foo',
    'description': 'bar'
   }
}

power_ups_controller.rb create方法和強參數聲明中的power_ups_controller.rb

def create
    @power_up = PowerUp.new(power_up_params)

  if @power_up.save!
    redirect_to @power_up
  end
end

private

  def power_up_params
    params.require(:power_up).permit(:name, :description)
  end

對不起有點太遲回答這個但可能會幫助其他人。

您需要做的就是-在您的請求標題中(在郵遞員或任何客戶端)添加

Content-Type = 'application/json'

或者,您也可以使用curl(source)進行嘗試:

curl -X POST -H "Content-Type: application/json" -d '{"power_up": { "name": "foo", "description": "bar" } }' 127.0.01:3000/v1/power_ups.json

就像@Tejas Patel所說的那樣都是關於標題的。 但不是明確地設置它們,你可以:

  1. 在請求創建區域中切換到body選項卡。 設置raw單選按鈕。 在較低的文本區域輸入您的身體:

    { "power_up": { "name": "foo", "description": "bar" } }

  2. 然后在rigth的下拉列表中選擇JSON (application/json)選項而不是默認的Text選項。 這將自動設置所需的標頭。 就是這樣 - 你可以按“發送”按鈕。

單引號(')實際上不是JSON中合法的字符串分隔符 :字符串必須用雙引號(“)括起來。你可以在瀏覽器中使用它,因為它們是javascript中的字符串分隔符。你可以很容易地復制它在一個irb會議上

JSON.parse(%q[{'foo': 'bar'}]) #=> raises JSON::ParserError
JSON.parse(%q[{"foo": "bar"}]) #=> ok

另外,根據您的規范,您應該使用第二種形式,即

{
  "power_up": {
    "name": "foo",
    "description": "bar"
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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