Ruby on rails Rails API和强参数
我正在尝试创建一个api来使用创建记录Foo 我最初运行generator命令,告诉rails为我创建一个控制器,它创建了以下内容:Ruby on rails Rails API和强参数,ruby-on-rails,api,ruby-on-rails-4,rails-api,Ruby On Rails,Api,Ruby On Rails 4,Rails Api,我正在尝试创建一个api来使用创建记录Foo 我最初运行generator命令,告诉rails为我创建一个控制器,它创建了以下内容: def create @foo = Foo.new(foo_params) @foo.save respond_with(@foo) end 这(强参数): 这是非常标准的东西,在使用表单提交数据到create方法时可以使用 在我的例子中,我正在创建一个独立的API web服务,它只能通过外部API调用进行交互。 所以我遇到的问题是,我不
def create
@foo = Foo.new(foo_params)
@foo.save
respond_with(@foo)
end
这(强参数):
这是非常标准的东西,在使用表单提交数据到create方法时可以使用
在我的例子中,我正在创建一个独立的API web服务,它只能通过外部API调用进行交互。
所以我遇到的问题是,我不知道如何通过API发布:bar参数。我试图发布一个:bar参数,但这会导致“param丢失或值为空:foo”错误。我明白为什么会发生这种事,但我不知道如何避免这种情况
有没有更好的方法来实现这一点,或者我应该以不同的方式提供api参数
另外,目前我的api POST调用如下所示:
http://localhost:3000/api/v1/foo.json?bar=test@mail.com
不能将url末尾的?+参数用于POST HTTP请求,它仅用于GET请求
您必须使用HTTP调用的数据组件,该组件未嵌入URL中
因此,你不能仅仅从你的浏览器地址栏来实现这一点,而必须使用curl或一个很棒的工具作为邮递员(在chrome应用商店免费提供)
在这个数据字段中,可以包含要发布的对象(postman为您提供了一个整洁的键值界面)
如果您需要有关用于命令行调用的curl函数的更多详细信息,请告诉我,但我建议您使用一个不错的工具作为Postman,如果您不习惯这些调用,它将非常有用
编辑:这是获取邮递员的URL:对于POST HTTP请求,不能使用URL末尾的?+参数,它仅用于get请求 您必须使用HTTP调用的数据组件,该组件未嵌入URL中 因此,你不能仅仅从你的浏览器地址栏来实现这一点,而必须使用curl或一个很棒的工具作为邮递员(在chrome应用商店免费提供) 在这个数据字段中,可以包含要发布的对象(postman为您提供了一个整洁的键值界面) 如果您需要有关用于命令行调用的curl函数的更多详细信息,请告诉我,但我建议您使用一个不错的工具作为Postman,如果您不习惯这些调用,它将非常有用
编辑:这是获取邮递员的URL:您好,谢谢您的回答。我没有提到,但我正在使用postman@NicholasPerfect,然后在postman中,选择post方法,输入url作为,然后单击body选项卡。这里输入的对象是键“foo.bar”,值是“test.mail.com”(我不是100%确定foo.bar的语法,但我在手机上,现在无法在计算机上测试)。重要的是要理解.require(:foo).permit(:bar)意味着您希望在数据中有一个名为foo的对象,该对象具有一个名为bar的属性,foo与url无关,而是与dataHi中包含的对象相关,谢谢您的回答。我没有提到,但我正在使用postman@NicholasPerfect,然后在postman中,选择post方法,输入url作为,然后单击body选项卡。这里输入的对象是键“foo.bar”,值是“test.mail.com”(我不是100%确定foo.bar的语法,但我在手机上,现在无法在计算机上测试)。重要的是要理解.require(:foo).permit(:bar)意味着在数据中需要一个名为foo的对象,该对象具有一个名为bar的属性,foo与url无关,而是与数据中包含的对象相关
def foo_params
params.require(:foo).permit(:bar)
end