我是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"
答案 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"