我有一个Rails 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?
我已经看过这两个问题,但对我来说还不够清楚,因为我仅在用户不存在时保存一些数据,并且如果我的用户不存在,则不是我的控制器的这种方法会将某些内容保存在我的数据库中,这将是我的外部爬虫类,该爬虫类将从网站上获取信息,而不是User.create(attributes)
,因此该端点是我的前端页面(将使用此API)只负责返回用户信息,我的客户不知道数据库中是否有任何插入
When do you use POST and when do you use GET?
When should I use GET or POST method? What's the difference between them?
答案 0 :(得分:3)
根据我仍然有限的知识,我将更改您的操作方式。
好:
将方法更改为user_info
并使其成为GET。第一次调用时它会产生一些额外的负载这一事实是不相关的。
更好:
将方法更改为show
(标准的Rails方法之一)并使用GET。
也许最好: 将爬网逻辑移至模型或单独的服务。通常,控制器方法不是执行此操作的最佳位置,但是您比我更了解您的应用。
答案 1 :(得分:1)
您正在保存到数据库,所以对我来说,从逻辑上讲这是一个POST。
答案 2 :(得分:1)
这将是POST方法,因为您是从数组中的外部源获取数据,然后将其提取并保存到数据库中。无需使用GET方法。