缺少属性(葡萄 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"