I am unable to understand - what is the difference between GET and QUERY? Just that in QUERY you can send parameters in the request body? Do we need a new method for that?
Yes, because there are various assumptions about GET that won't fit if GET can suddenly contain a request body. For example, existing caching servers may continue to cache content based only on the URL and headers, ignoring the request body entirely, producing bad results. Additionally, there may be some more subtle problems related to the Content-Length header, which is supposed to NEVER be sent for GET, but would be required for QUERY (since all requests that can contain a body MUST have a Content-Length header, depending on encoding; while requests that can't contain a body MUST NOT have a Content-Length header).