Ruby on rails Rails API和强参数

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调用进行交互。 所以我遇到的问题是,我不

我正在尝试创建一个api来使用创建记录Foo

我最初运行generator命令,告诉rails为我创建一个控制器,它创建了以下内容:

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