我正在尝试使用rails-api gem创建一个api来创建记录Foo。
我最初运行生成器命令告诉rails为我创建一个控制器,它创建了这个:
def create
@foo = Foo.new(foo_params)
@foo.save
respond_with(@foo)
end
这个(强对手):
def foo_params
params.require(:foo).permit(:bar)
end
这是非常标准的东西,在使用form_for将数据提交到create方法时会起作用。
就我而言,我正在创建一个仅通过外部API调用进行交互的独立API Web服务。 所以我遇到的问题是,我不知道如何通过API发布:bar param。我尝试发布一个:bar param,但这会导致'param丢失或值为空:foo'错误。我理解为什么会这样,但我不知道如何解决这个问题......
有更好的方法可以做到这一点,还是应该以不同的方式提供api param?
PS。目前我的api POST调用如下所示:
http://localhost:3000/api/v1/foo.json?bar=test@mail.com
答案 0 :(得分:0)
你不能在URL的末尾使用?+参数来发送POST HTTP请求,它只能用于GET请求。
您必须使用HTTP调用的数据组件,该组件未嵌入URL
因此,您不能只从浏览器地址栏中进行此操作,并且必须使用curl或一个很棒的工具作为Postman(在Chrome App Store上免费) 在此数据字段中,您可以包含要发布的对象(邮递员为您提供了一个整洁的键值界面)
如果您需要有关命令行调用的curl函数的更多详细信息,请告诉我,但我建议您使用一个漂亮的工具作为Postman,如果您不习惯这些调用则非常有用
编辑:这是获取邮递员的网址:https://www.getpostman.com