首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果控制器方法导致外部服务修改数据库,我应该使用GET还是POST?

如果控制器方法导致外部服务修改数据库,我应该使用GET还是POST?
EN

Stack Overflow用户
提问于 2018-12-19 22:05:51
回答 3查看 53关注 0票数 0

我有一个Rails API,我要加载一些用户信息的端点是:

代码语言:javascript
复制
# 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?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-19 23:09:17

基于我有限的知识,我会改变你做这件事的方式。

好:将方法更改为user_info,并将其设置为GET。当你第一次调用它的时候,它做了一些额外的加载,这是一个副作用,这一点是不相关的。

更好的做法是:将方法更改为show (一种标准的Rails方法)并使用GET。

也许最好的方法是:将爬行逻辑移动到模型或单独的服务中。通常,控制器方法不是执行此操作的最佳方法,但您比我更了解您的应用程序。

票数 3
EN

Stack Overflow用户

发布于 2018-12-19 22:10:35

你正在保存到你的数据库中,所以对我来说,逻辑上它是一个POST。

票数 1
EN

Stack Overflow用户

发布于 2018-12-19 22:32:13

它将是POST方法,因为您将从外部源获取数组中数据,并将其提取并保存到数据库中。不需要使用GET方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53852925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档