103 lines
2.9 KiB
Dart
103 lines
2.9 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:EasyDartModule/EasyDartModule.dart';
|
|
|
|
import '../model/api_response.dart';
|
|
import '../model/app_uri_status.dart';
|
|
import '../util/MyUtils.dart';
|
|
|
|
Future<ApiResponse> requestWithLog({
|
|
required String logTitle,
|
|
required MyHttpMethod method,
|
|
required String queryUrl,
|
|
Map<String, dynamic>? data,
|
|
String successMsg = "操作成功",
|
|
String errorMsg = "操作失败",
|
|
void Function(ApiResponse res)? onSuccess,
|
|
void Function(ApiResponse res)? onFailure,
|
|
}) async {
|
|
EasyDartModule.logger.info(logTitle);
|
|
|
|
ApiResponse apiResponse = ApiResponse(code: -1, msg: "请求失败");
|
|
try {
|
|
String? language = "";
|
|
if (language != null && language.isNotEmpty) {
|
|
if (queryUrl.contains("?")) {
|
|
queryUrl += "&lang=$language";
|
|
} else {
|
|
queryUrl += "?lang=$language";
|
|
}
|
|
}
|
|
successMsg = successMsg;
|
|
errorMsg = errorMsg;
|
|
|
|
var response;
|
|
|
|
switch (method) {
|
|
case MyHttpMethod.get:
|
|
response = await EasyDartModule.dio.get(queryUrl);
|
|
break;
|
|
case MyHttpMethod.post:
|
|
response = data != null
|
|
? await EasyDartModule.dio.post(queryUrl, data: jsonEncode(data))
|
|
: await EasyDartModule.dio.post(queryUrl);
|
|
break;
|
|
case MyHttpMethod.put:
|
|
response = data != null
|
|
? await EasyDartModule.dio.put(queryUrl, data: jsonEncode(data))
|
|
: await EasyDartModule.dio.put(queryUrl);
|
|
break;
|
|
case MyHttpMethod.delete:
|
|
response = data != null
|
|
? await EasyDartModule.dio.delete(queryUrl, data: jsonEncode(data))
|
|
: await EasyDartModule.dio.delete(queryUrl);
|
|
break;
|
|
}
|
|
|
|
if (response != null) {
|
|
final responseData =
|
|
response.data is String ? jsonDecode(response.data) : response.data;
|
|
|
|
apiResponse = ApiResponse.fromJson(responseData, (object) => object,
|
|
rawResponse: response);
|
|
|
|
if (apiResponse.code == HttpStatusCodes.ok || apiResponse.code == 20000) {
|
|
MyUtils.formatResponse(apiResponse, successMsg, errorMsg);
|
|
onSuccess?.call(apiResponse);
|
|
} else {
|
|
print("[网络请求失败:$response]");
|
|
apiResponse.msg = responseData['msg'] ?? errorMsg;
|
|
onFailure?.call(apiResponse);
|
|
}
|
|
|
|
return apiResponse;
|
|
} else {
|
|
apiResponse = ApiResponse(code: -1, msg: "失败");
|
|
onFailure?.call(apiResponse);
|
|
return apiResponse;
|
|
}
|
|
} catch (e) {
|
|
print("[网络请求异常:$e]");
|
|
EasyDartModule.logger.error("$logTitle 失败->$e");
|
|
onFailure?.call(apiResponse);
|
|
return apiResponse;
|
|
}
|
|
}
|
|
|
|
enum MyHttpMethod { get, post, put, delete }
|
|
|
|
extension HttpMethodExtension on MyHttpMethod {
|
|
String get name {
|
|
switch (this) {
|
|
case MyHttpMethod.get:
|
|
return 'GET';
|
|
case MyHttpMethod.post:
|
|
return 'POST';
|
|
case MyHttpMethod.put:
|
|
return 'PUT';
|
|
case MyHttpMethod.delete:
|
|
return 'DELETE';
|
|
}
|
|
}
|
|
}
|