fetchBaseQuery
This is a very small wrapper around fetch
that aims to simplify requests. It is not a full-blown replacement for axios
, superagent
, or any other more heavy-weight library, but it will cover the large majority of your needs.
It takes one argument with an option of baseUrl
, which is typically a string like https://api.your-really-great-app.com/v1/
. If you don't provide a baseUrl
, it defaults to a relative path from where the request is being made. You should most likely always specify this.
fetchBaseQuery
Using To use it, simply import it when you are creating an API service definition.
Individual query options
Even though fetchBaseQuery
only takes an object with baseUrl
, there is more behavior that you can define on a per-request basis.
Setting the body
By default, fetchBaseQuery
assumes that every request you make will be json
, so in those cases all you have to do is set the url
and pass a body
object when appropriate. For other implementations, you can manually set the Headers
to specify the content type.
json
text
Setting the query string
fetchBaseQuery
provides a simple mechanism that converts an object
to a serialized query string. If this doesn't suit your needs, you can always build your own querystring and set it in the url
.
Parsing a Response
By default, fetchBaseQuery
assumes that every Response
you get will be parsed as json
. In the event that you don't want that to happen, you can specify an alternative response handler like text
, or take complete control and use a custom function that accepts the raw Response
object โ allowing you to use any Body
method.
Handling non-standard Response status codes
By default, fetchBaseQuery
will reject
any Response
that does not have a status code of 2xx
and set it to error
. This is the same behavior you've most likely experienced with axios
and other popular libraries. In the event that you have a non-standard API you're dealing with, you can use the validateStatus
option to customize this behavior.