Intercept APIs
Interceptors (similar to middleware) are a way to modify requests and responses. It is a middle man between your app and the network. They can be used for a variety of purposes such as logging, authentication, and caching.
The HttpAbstraction
is made to work with interceptors out of the box. We have added a LoggingInterceptor
that will log requests only during development. To activate an interceptor you can pass it in the interceptors
parameter of the HttpAbstraction
constructor.
HttpAbstraction( interceptors: [ LoggingInterceptor( logBody: !kReleaseMode, // Only log bodies in debug mode ), ],),
Create Your Own Interceptor
You can create your own interceptor by implementing the HttpInterceptor
interface. This will have two methods: interceptRequest
and interceptResponse
.
The interceptRequest
method will be called when a request is made. You can modify this request and return it to be used by the HttpAbstraction
.
The interceptResponse
method will be called when a response is received. You can modify this response and return to be used by the HttpAbstraction
.
class MyCustomInterceptor implements HttpInterceptor { @override Future<http.BaseRequest> interceptRequest(http.BaseRequest request) async { // do something with the request, maybe refresh a token? return request; }
@override Future<http.BaseResponse> interceptResponse(http.BaseResponse response) async { // do something with the response. return response; }}