属性缺失(葡萄API)

时间:2015-10-07 09:10:55

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

我是Rails的新手。我尝试使用gem grape编写一个小的API Rails应用程序。

我跟进了本教程http://www.sitepoint.com/build-great-apis-grape/

但是当我尝试创建新记录时,我遇到了一个错误: {"error":"type_id is missing"}

这是我的代码:

singers.rb

module V1
 class Singers < Grape::API
  resource :singers do
    desc "List all singers"
    get do
      Singer.all
    end

    desc "Create a new singer"
    params do
      requires :name, type: String
      requires :type_id, type: Integer
    end

    post do
      Singer.create!({
       name: params[:name],
       type_id: params[:type_id]
      })
    end
  end
 end
end

当我输入控制台时: curl http://localhost:3000/api/v1/singers.json -d "name=khanhpn;type_id=1"

我遇到了错误:{"error":"type_id is missing"}

我不明白为什么会抛出错误。希望大家能为我解释一下。非常感谢你。

这是我推送bitbucket的代码: https://bitbucket.org/baran19901990/grape_api/src/b8a0d676f17de3fedc95cc7efff60fab5afb0fc1/app/api/v1/singers.rb?at=master&fileviewer=file-view-default

解决方案:

curl -X POST http://localhost:3000/api/v1/singers -d "name=khanhpn&type_id=1"

2 个答案:

答案 0 :(得分:3)

我认为问题不是代码,而是卷曲调用......

尝试使用以下内容:

curl -d "name=khanhpn" -d "type_id=1" -X POST http://localhost:3000/api/v1/singers

如果要使用-d选项或使用单行命令,则类似于:

$(BDS)\bin\CodeGear.Delphi.Targets

答案 1 :(得分:2)

问题在于将参​​数传递给curl。您必须按&而不是;将它们分开 curl http://localhost:3000/api/v1/singers.json -d "name=khanhpn&type_id=1"