缺少属性(葡萄 API)
Attributes is missing (grape API)
我是 Rails 的新手。我试着写了一个小 API Rails 应用程序使用 gem grape
.
我跟进了这个教程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"
我认为问题不在于代码,而在于 curl 调用...
试试类似的东西:
curl -F name=khanhpn \
-F type_id=1 \
-X POST http://localhost:3000/api/v1/singers
如果你想使用 -d 选项,或者使用单行命令,它会是这样的:
curl -d "name=khanhpn" -d "type_id=1" -X POST http://localhost:3000/api/v1/singers
问题在于将您的参数传递给 curl
。你必须用 &
而不是 ;
来分隔它们
curl http://localhost:3000/api/v1/singers.json -d "name=khanhpn&type_id=1"
我是 Rails 的新手。我试着写了一个小 API Rails 应用程序使用 gem grape
.
我跟进了这个教程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"
我认为问题不在于代码,而在于 curl 调用...
试试类似的东西:
curl -F name=khanhpn \
-F type_id=1 \
-X POST http://localhost:3000/api/v1/singers
如果你想使用 -d 选项,或者使用单行命令,它会是这样的:
curl -d "name=khanhpn" -d "type_id=1" -X POST http://localhost:3000/api/v1/singers
问题在于将您的参数传递给 curl
。你必须用 &
而不是 ;
来分隔它们
curl http://localhost:3000/api/v1/singers.json -d "name=khanhpn&type_id=1"