title: Why is using a HTTP GET to update state on the server in a RESTful call incorrect?
body: <p>OK, I know already all the reasons <strong><em>on paper</em></strong> why I should <em>not</em> use a HTTP GET when making a RESTful call to update the state of something on the server. Thus returning possibly different data each time. And I know this is wrong for the following 'on paper' reasons:</p>
  
  <ul>
  <li>HTTP GET calls should be idempotent</li>
  <li>N > 0 calls should always GET the same data back</li>
  <li>Violates HTTP spec</li>
  <li>HTTP GET call is typically read-only</li>
  </ul>
  
  <p>And I am sure there are more reasons. But I need a concrete simple example for justification other than "Well, that violates the HTTP Spec!". ...or at least I am hoping for one. I have also already read the following which are more along the lines of the list above: <a href="https://stackoverflow.com/questions/9408472/does-it-violate-the-restful-when-i-write-stuff-to-the-server-on-a-get-call">Does it violate the RESTful when I write stuff to the server on a GET call?</a> &amp; 
  <a href="https://stackoverflow.com/questions/611906/http-post-with-url-query-parameters-good-idea-or-not">HTTP POST with URL query parameters -- good idea or not?</a> </p>
  
  <p>For example, can someone justify the above and why it is wrong/bad practice/incorrect to use a HTTP GET say with the following RESTful call </p>
  
  <pre><code>"MyRESTService/GetCurrentRecords?UpdateRecordID=5&amp;AddToTotalAmount=10"
  </code></pre>
  
  <p>I know it's wrong, but hopefully it will help provide an example to answer my original question. So the above would update recordID = 5 with AddToTotalAmount = 10 and then return the updated records. I know a POST <em>should</em> be used, but let's say I did use a GET.</p>
  
  <p>How <em>exactly</em> and to answer my question does or can this cause an <em>actual</em> problem? Other than all the violations from the above bullet list, how can using a HTTP GET to do the above cause some real issue? Too many times I come into a scenario where I can justify things with "Because the doc said so", but I need justification and a better understanding on this one.</p>
  
  <p>Thanks!</p>