post<T extends TCICBaseModel?, B extends TCICBaseModel> static method
Future<T?>
post<
T extends TCICBaseModel?, B extends TCICBaseModel>({ - required String api,
- Map<String, dynamic>? params,
- B? body,
- T fromJson(
- Map<String, dynamic>
)?,
})
Implementation
static Future<T?> post<T extends TCICBaseModel?, B extends TCICBaseModel>({
required String api,
Map<String, dynamic>? params,
B? body,
T Function(Map<String, dynamic>)? fromJson,
}) async {
String token = TCICController.instance.getConfig().token;
var baseParam = {
'random': DateTime.now().microsecondsSinceEpoch,
'lang': 'zh',
'token': token,
};
var data = {...params ?? {}, ...baseParam};
var headers = {'Content-Type': 'application/json'};
var response = await dio.post(
api,
data: body?.toJson(),
options: Options(headers: headers),
queryParameters: data,
);
if (response.statusCode == 200) {
if (response.data['error_code'] != 0) {
TCICLog.info(
'【重要】host: ${TCICConst.apiHost} api: $api 请求失败 error_code!=0 errorCode: ${response.data['error_code']} ${response.data['error_msg']} data: ${response.data}',
actionModule: ActionModule.httpClient.name,
actionName: ActionName.onError.name,
);
// 这里报错,到时业务侧不能处理这个报错,所以暂时不抛出异常
TCICLog.error('host: ${TCICConst.apiHost} api: $api 请求失败 error_code!=0 errorCode: ${response.data['error_code']} ${response.data['error_msg']} data: ${response.data}', actionModule: ActionModule.httpClient.name, actionName: ActionName.onError.name);
// TCICToast.show(StringEnum.apiRequestFailed,params: [api, response.data['error_code'].toString(), response.data['error_msg'].toString()]);
if(fromJson != null){
return fromJson(Map<String, dynamic>.from(response.data));
} else {
return null;
}
// throw TCICApiException(
// response.data['error_msg'],
// response.data['error_code'],
// api,
// );
}
if (response.data != null && fromJson != null) {
return fromJson(Map<String, dynamic>.from(response.data));
} else {
return null; // 或者返回一个默认值
}
} else {
TCICToast.show(StringEnum.apiRequestFailed,params: [api, response.statusCode.toString(), jsonEncode(response.data).toString()]);
TCICLog.info(
'【重要】host: ${TCICConst.apiHost} api: $api 请求失败 statusCode!=200 statusCode: ${response.statusCode} ${jsonEncode(response.data)}',
actionModule: ActionModule.httpClient.name,
actionName: ActionName.onError.name,
);
if(fromJson != null){
return fromJson(Map<String, dynamic>.from(response.data));
} else {
return null;
}
// throw TCICApiException(response.data['message'], response.statusCode ?? 401, api);
}
}