With the REST API, I sometimes send queries to eXist using a GET (_query=...) and sometimes using a POST ( syntax). In general I use whatever is the most convenient. This leads be situations where I send queries that modify data with a GET, for instance to run a simple xmldb:create-collection(). And of course, this is a "bad things", because is violates the semantic of GET. But I am lazy, so convenience wins.
I would sleep better at night if eXist would both satisfy my lazy side, and allow me to do the right thing: that is doing a POST with _query. Right now this does not work. It gives me a "SAX exception while parsing request: Premature end of file.", as I assume eXist must be trying to parse the body of the post as an XML document. I guess eXist could check if there is a _query request parameter, and if there is use that as the query instead of parsing the body.
For further discussion on this, see thread on exist-open: