Had*_*han 4 api http interceptor flutter
我必须向我的所有 Api 添加标头。有人告诉我为此使用 http 拦截器。但我无法理解如何做到这一点,因为我是颤振的新手。谁能帮我举个例子吗?
您可以使用http_interceptor。它的工作原理如下,
首先你通过实现来创建你的拦截器InterceptorContract
class MyInterceptor implements InterceptorContract {
@override
Future<RequestData> interceptRequest({RequestData data}) async {
try {
data.headers["Content-Type"] = "application/json";
} catch (e) {
print(e);
}
return data;
}
@override
Future<ResponseData> interceptResponse({ResponseData data}) async => data;
}
Run Code Online (Sandbox Code Playgroud)
然后创建一个客户端并在其中注入这个拦截器
Client _client = InterceptedClient.build(interceptors: [
MyInterceptor(),
]);
Run Code Online (Sandbox Code Playgroud)
您可以向同一个客户端添加多个拦截器,假设您希望一个拦截器刷新令牌,一个拦截器添加/更改标头,所以它将是这样的:
Client _client = InterceptedClient.build(interceptors: [
RefreshTokenInterceptor(),
ContentTypeInterceptor(),
/// etc
]);
Run Code Online (Sandbox Code Playgroud)
请注意,每个拦截器都必须实现InterceptorContract
现在,只要您使用此客户端,请求就会被拦截,并且标头将添加到其中。您可以将此客户端设置为单例,以便在应用程序中使用相同的实例,如下所示
class HttpClient {
Client _client;
static void _initClient() {
if (_client == null) {
_client = InterceptedClient.build(
interceptors: [MyInterceptor()],
);
}
}
/// implement http request with this client
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7933 次 |
最近记录: |