With POST, you can't know at a system level if it's safe to cache the response or not.
So if you are using POST to query, you can't cache the response. You have to resort to POST/GET. With QUERY, you have idempotent requests with cacheable responses you can directly return.