Rails获取或发布路由?

时间:2016-03-09 01:21:40

标签: ruby-on-rails routing routes

我不确定在这种情况下使用Get或Post路线。

因此,Get用于获取资源,而Post用于创建资源。但是,如果您实际上只是进入模型数据库并进行搜索,那该怎么办呢。

例如,如果您仅通过电话号码输入搜索用户,该怎么办?你会使用Get或Post吗?

4 个答案:

答案 0 :(得分:1)

在这种情况下,您正在查找记录,这是一个GET请求。我可以理解为什么你会感到困惑,因为你正在考虑通过表单传递一个参数来进行POST。

通常情况下,当您创建或更新记录时使用POST操作(虽然后者我使用PUT或PATCH。)我不相信你'将电话号码输入保存为新记录。您可以将此作为GET请求,并将电话号码作为参数传递。在控制器操作中,您可以选取参数并将其传递给模型以进行查找。

答案 1 :(得分:1)

因为您正在尝试查找用户记录,所以您将需要使用GET请求。

就像你说的,GET请求返回给定位置的资源。

所以你可能会对自己说,"我需要从服务器获取用户11"。那么你想要向服务器写一个请求,"给我存储在" / users / 11"的用户记录。 - 如果这是一个有效的路线(即,如果有这样的记录),服务器会说,"在这里你去"作为回应。

这与POST请求形成对比。

在POST请求中,您可能会对自己说,"我需要更新用户11"的电话号码。因此,在这种情况下,您将编写一个POST请求,其路径类似于" users / 11 / edit"并且您将其他数据传递给该记录。在这种情况下,只要用户11存在,服务器就会响应,"好的,我做到了。"

答案 2 :(得分:1)

通常,您可能希望使用GET请求来查询资源/资源。 POST用于创建资源。 PUT用于更新完整资源。 PATCH用于部分更新资源。最后DELETE用于销毁资源。

由于您的请求是用于查询资源/资源,因此可以使用GET请求。在此方案中使用GET请求的另一个额外好处是,最终用户可以在搜索后为URL添加书签,如果他稍后访问已添加书签的URL,则它仍然可以正常运行。但是,如果您使用POST并将其呈现而不是重定向,那么如果最终用户为该网址添加书签,那么当他/她稍后尝试访问已添加书签的网址时,浏览器将发出警告。

答案 3 :(得分:-1)

如果您正在处理搜索功能,并且混淆是否在表单中使用 POST或GET 方法。

对我而言,要么使用 GOOD 中的任何一个,只需要在网址中显示搜索参数,因为它会为您提供相同 ActiveRecord结果。