together_mobile/lib/request/server.dart

54 lines
1.7 KiB
Dart
Raw Normal View History

2023-07-04 11:51:11 +08:00
import 'package:dio/dio.dart';
import 'package:together_mobile/models/init_get_it.dart';
import 'package:together_mobile/models/token_model.dart';
const baseUrl = 'http://10.0.2.2:8000/api';
const avatarsUrl = 'http://10.0.2.2:8000/static/avatars';
2023-07-04 11:51:11 +08:00
final baseOptions = BaseOptions(
baseUrl: baseUrl,
2023-07-04 11:51:11 +08:00
connectTimeout: const Duration(seconds: 5),
receiveTimeout: const Duration(seconds: 5),
);
var request = Dio(baseOptions)
..interceptors.add(
InterceptorsWrapper(
onRequest:
(RequestOptions options, RequestInterceptorHandler handler) async {
2023-07-04 11:51:11 +08:00
String baseUrl = options.baseUrl.replaceFirst('/api', '');
options.baseUrl = baseUrl;
if (getIt.get<Token>().token != '') {
options.headers['Authorization'] =
'Bearer ${getIt.get<Token>().token}';
}
2023-07-04 11:51:11 +08:00
return handler.next(options);
},
onResponse: (Response response, ResponseInterceptorHandler handler) {
if (response.statusCode! >= 200 && response.statusCode! < 400) {
if (response.headers.value('Authorization') != null) {
// update token
getIt
.get<Token>()
.updateToken(response.headers.value('Authorization')!);
}
2023-07-04 11:51:11 +08:00
return handler.resolve(response);
} else {
handler.reject(
DioException.badResponse(
statusCode: response.statusCode!,
requestOptions: RequestOptions(),
response: response,
),
);
}
},
onError: (DioException e, ErrorInterceptorHandler handler) {
// print('错误信息:' + e.response?.data);
// print('错误码: ${e.response?.statusCode}');
handler.reject(e);
},
),
);