I am writing (or trying to write) a RESTful webservice. One of it's primary functions is to allow clients to search for files from our server. This seems like a textbook GET scenario, but the searches are too complex/flexible to be entered in the URL.
Rather, I am accepting search parameters via an XML object. The obvious problem there is GETs aren't supposed to have request bodies. In fact, the webserver I'm using simply ignores them, so I couldn't ignore this practice if I wanted to.
It seems then that POST is the next option, but this is clearly not really what I'm after. It will get the job done (it's actually what I'm using right now), but it's very obviously not the correct request method for the job. In no way am I creating a new resource; I am literally copying the bytes from an existing file and feeding that back to the client. It doesn't get more GET than that.
The problem I'm facing is that a request for a file simply has too many fields to be feasibly put into a URL (some optional, some mandatory, some conditionally mandatory based on other fields, and so on...), but the only other option I have is to deliberately abuse one of REST's 4 keywords. Neither of these are very RESTful.
Is there a point where requests can simply become too complicated to maintain a pure REST approach, or am I not approaching this correctly? Have I just completely missed the mark and am actually using RPC instead of REST?
NOTE: I know that there are a few similar questions on this topic, but none of them seem to have an official consensus (mainly answers like "I'm using POST, but it's pretty hacky"), and many are from several years ago. I'm hoping the REST community has since come to a larger agreement on how to handle these, or at least agreed this isn't a RESTful thing to do.