Ok, I know it's a bad idea and it shouldn't be done but for the sake of this question please assume there's no other way - I am given API endpoint that requires GET request with empty object as a body.
Is there a way to do async request from browser?
axios library which uses
XMLHttpRequest under the hood and <a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send" rel="nofollow">MDN</a> says that
send wipes the body when HTTP method is
I tried using native
fetch but it gives me this error in browser:
TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
Is there any way to do it?Answer1:
No, there isn't.
<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET" rel="nofollow">GET requests</a> can't have a request body, you can't make them have one. GET requests only retrieve data, they never send data.
An API that requires GET request with empty object as a body just doesn't work.<h3>Edit:</h3>
Apparently, GET requests are allowed to have a body. Most implementations will ignore it or reject the request. But even if the server that provides your API allows a body, you can't use it:
From the spec about <a href="https://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-send()-method" rel="nofollow">
Initiates the request. The optional argument provides the request entity body. <strong>The argument is ignored if request method is GET or HEAD.</strong> Throws an "InvalidStateError" exception if the state is not OPENED or if the send() flag is set.</blockquote>
From the spec about the <a href="https://fetch.spec.whatwg.org/#request-class" rel="nofollow">
Request class</a> in the fetch API:
If either init’s body member is present and is non-null or <strong>inputBody is non-null</strong>, and <strong>request’s method is
HEAD</strong>, <strong>then throw a TypeError</strong>.
That means that the answer to your question is still <em>No</em>.