import 'package:dio/dio.dart';
class DioHttp {
final Dio _dio = Dio();
// 静态资源域名
static const String _staticBaseUrl = 'https:// 静态资源域名地址';
// 数据请求域名
static const String _dataBaseUrl = 'https://数据请求域名地址';
DioHttp() {
// 设置通用的基础URL
_dio.options.baseUrl = _dataBaseUrl;
// 设置请求头,这里用于携带认证数据(例如令牌)
_dio.options.headers['Authorization'] = 'Bearer 你的token值';
// 添加请求前拦截器
_dio.interceptors.add(InterceptorsWrapper(
onRequest: (options, handler) {
print("请求前拦截触发");
// 打印请求的地址
print('Request Url: ${options.uri}');
// 在请求前的拦截器中可以执行一些操作,例如添加通用的请求头
options.headers['Custom-Header'] = 'Custom-Value';
return handler.next(options); // 继续请求
},
));
// 添加请求后拦截器
_dio.interceptors.add(InterceptorsWrapper(
onResponse: (response, handler) {
print("结束请求拦截触发");
// 在请求后的拦截器中可以执行一些操作,例如日志记录
print('Response Status Code: ${response.statusCode}');
return handler.next(response); // 继续后续操作
},
));
}
// 配置静态资源域名
void setStaticBaseUrl() {
_dio.options.baseUrl = _staticBaseUrl;
}
// 配置数据请求域名
void setDataBaseUrl() {
_dio.options.baseUrl = _dataBaseUrl;
}
// 发起GET请求
Future<Response> get(String path, {Map<String, dynamic>? queryParameters}) {
return _dio.get(path, queryParameters: queryParameters);
}
// 发起POST请求
Future<Response> post(String path, {dynamic data}) {
return _dio.post(path, data: data);
}
// 发起多个请求
Future<List<Response>> batchRequests(List<RequestOptions> requests) {
final futures = requests.map((request) {
final options = Options(
method: request.method,
headers: request.headers,
responseType: ResponseType.json, // 设置响应类型
);
return _dio.request(request.path, options: options, data: request.data);
}).toList();
return Future.wait(futures);
}
}
flutter使用dio包进行网络请求、拦截器
于 2023-10-13 02:02:54 首次发布