如果控制器方法导致外部服务修改数据库,则应使用get或post



我有一个导轨API,并且加载一些用户信息的端点是:

# at user controller
def load_user_info
  user = User.find_by(id: params[:id])
  if user.blank?
    # Here I call an external service to crawl user info from 
    # some webpage, and after get this info I save it in my database
  else
    user
  end
end

在这种情况下,我的load_user_info路线应该应该是get或post?

我已经看过这两个问题,但是对我来说还不够清楚,因为我只在不存在的情况将在我的数据库中保存一些东西,这将是我的外部爬网类,此crawler类将从网站上获取信息,而不是User.create(attributes),因此,在我的前端页面(将使用此API)此端点只是负责返回用户信息,我的客户端不知道我的数据库中的任何插入

您什么时候使用帖子,什么时候使用?

我什么时候应该使用get或post方法?它们有什么区别?

基于我仍然有限的知识,我会更改您这样做的方式。

好:将方法更改为user_info并使其成为一个。您第一次称呼它是副作用的事实,这是无关的。

更好:将方法更改为show(标准导轨方法之一)并使用GET。

也许最好:将爬网逻辑移至模型或单独的服务。通常,控制器方法不会是这样做的最佳场所,但是您比我更了解您的应用程序。

它将是发布方法,因为您在数组中获取外部源数据,然后将其提取并将其保存到数据库中。无需使用获取方法。

您要保存到数据库中,因此对我而言,这是一篇文章。

最新更新