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?
I'm using axios
library which uses XMLHttpRequest
under the hood and MDN says that send
wipes the body when HTTP method is GET
.
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?
No, there isn't.
GET requests 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.
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 XMLHttpRequest#send
:
Initiates the request. The optional argument provides the request entity body. The argument is ignored if request method is GET or HEAD. Throws an "InvalidStateError" exception if the state is not OPENED or if the send() flag is set.
From the spec about the Request
class in the fetch API:
If either init’s body member is present and is non-null or inputBody is non-null, and request’s method is
GET
orHEAD
, then throw a TypeError.
That means that the answer to your question is still No.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With