Flutter dio http 封装指南说明
warning:
这篇文章距离上次修改已过327天,其中的内容可能已经有所变动。
import 'package:dio/dio.dart';
class HttpUtils {
static final BaseOptions baseOptions = BaseOptions(
baseUrl: 'https://www.example.com',
connectTimeout: 5000,
receiveTimeout: 3000,
);
static final Dio dio = Dio(baseOptions);
// 发起GET请求
static Future<Response> get(String path, {Map<String, dynamic>? queryParameters, Options? options}) async {
try {
return await dio.get(path, queryParameters: queryParameters, options: options);
} on DioError catch (e) {
// 处理请求错误
print('请求出错: ${e.message}');
rethrow;
}
}
// 发起POST请求
static Future<Response> post(String path, {data, Options? options}) async {
try {
return await dio.post(path, data: data, options: options);
} on DioError catch (e) {
// 处理请求错误
print('请求出错: ${e.message}');
rethrow;
}
}
// 添加请求拦截器
static void addRequestInterceptor(RequestInterceptor handler) {
dio.interceptors.add(InterceptorsWrapper(
onRequest: (RequestOptions options, RequestInterceptorHandler handler) async {
// 在这里根据需要修改请求头或其他信息
// 例如添加token
// options.headers['Authorization'] = 'Bearer your-token';
handler.next(options); // 继续请求
},
));
}
// 添加响应拦截器
static void addResponseInterceptor(ResponseInterceptor handler) {
dio.interceptors.add(InterceptorsWrapper(
onResponse: (Response response, ResponseInterceptorHandler handler) async {
// 在这里处理响应数据,比如解析数据
// 例如解析json
// var jsonData = jsonDecode(response.data);
// response.data = jsonData;
handler.next(response); // 继续处理响应
},
));
}
}
// 使用示例
void main() async {
// 发起GET请求
var response = await HttpUtils.get('/some-endpoint');
print(response.data);
// 添加请求拦截器
HttpUtils.addRequestInterceptor((RequestOptions options) {
// 在这里添加拦截逻辑
});
// 添加响应拦截器
HttpUtils.addResponseInterceptor((Response response) {
// 在这里处理响应逻辑
});
}
这个示例代码展示了如何封装一个简单的Dio HTTP请求工具类,包括GET和POST请求的基本使用,以及如何添加请求和响应拦截器。这是一个很好的学习资源,对于初学者来说可以学习到如何组织HTTP请求代码,同时也可以为开发者提供一个扩展和自定义的起点。
评论已关闭