Если метод контроллера заставляет внешнюю службу изменять базу данных, я должен использовать GET или POST? - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть 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) эта конечная точка просто отвечает за возвращение пользователяинформация, мой клиент не знает ни о какой вставке в моей базе данных

Когда вы используете POST и когда вы используете GET?

Когда я должениспользовать метод GET или POST?В чем разница между ними?

Ответы [ 3 ]

0 голосов
/ 19 декабря 2018

Это будет метод POST, потому что вы получаете данные из внешнего источника в массиве, извлекаете их и сохраняете в своей базе данных.нет необходимости использовать метод GET.

0 голосов
/ 19 декабря 2018

Исходя из все еще ограниченных знаний, которыми я обладаю, я бы изменил способ, которым вы это делаете.

Хорошо: измените метод на user_info и сделайте его GET.Тот факт, что он делает дополнительную загрузку при первом вызове, является побочным эффектом и не имеет значения.

Лучше: измените метод на show (один из стандартных методов Rails) и используйтеGET.

Может быть, лучше: перенести логику сканирования в модель или в отдельный сервис.Как правило, метод контроллера не был бы лучшим местом для этого, но вы знаете свое приложение лучше, чем я.

0 голосов
/ 19 декабря 2018

Вы сохраняете в свою базу данных, поэтому для меня логически это POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...