[英]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所說的那樣都是關於標題的。 但不是明確地設置它們,你可以:
在請求創建區域中切換到body
選項卡。 設置raw
單選按鈕。 在較低的文本區域輸入您的身體:
{ "power_up": { "name": "foo", "description": "bar" } }
然后在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.