Почему неправильно использовать HTTP GET для обновления состояния сервера в вызове RESTful?

Хорошо, я уже знаю все причинына бумаге , почему я должен неиспользовать HTTP GET при вызове RESTful для обновления состояния чего-либо на сервере . Таким образом, возвращая, возможно, разные данные каждый раз. И я знаю, что это неправильно по следующим причинам «на бумаге»:

  • Вызовы HTTP GET должны быть идемпотентными
  • Вызовы N > 0 всегда должны возвращать одни и те же данные
  • Нарушает спецификацию HTTP
  • Вызов HTTP GET обычно доступен только для чтения

И я уверен, что есть и другие причины. Но мне нужен конкретный простой пример для обоснования, кроме «Ну, это нарушает спецификацию HTTP!». ...или, по крайней мере, я на это надеюсь. Я также уже прочитал следующее, которое больше похоже на список выше: Нарушает ли это RESTful, когда я пишу данные на сервер при вызове GET? & HTTP POST с параметрами запроса URL — хорошая идея или нет?

Например, может ли кто-нибудь обосновать вышеизложенное и почему неправильно/плохая практика/неправильно использовать HTTP GET say со следующим вызовом RESTful

"MyRESTService/GetCurrentRecords?UpdateRecordID=5&AddToTotalAmount=10"

Я знаю, что это неправильно, но, надеюсь, это поможет предоставить пример для ответа мой оригинальный вопрос. Таким образом, приведенный выше код обновит recordID = 5 с помощью AddToTotalAmount = 10, а затем вернет обновленные записи. Я знаю, что нужно использовать POST , но, скажем, я использовал GET.

Как точнои ответ на мой вопрос вызывает или может вызвать фактическуюпроблему? Помимо всех нарушений из приведенного выше списка, как использование HTTP GET для выполнения вышеуказанного может вызвать реальную проблему? Слишком часто я сталкиваюсь со сценарием, в котором я могу оправдаться словами «Потому что так сказал док», но мне нужно обоснование и лучшее понимание этого.

Спасибо!

9
задан Community 23 May 2017 в 10:33
поделиться