post<T extends TCICBaseModel?, B extends TCICBaseModel> static method

Future<T?> post<T extends TCICBaseModel?, B extends TCICBaseModel>({
  1. required String api,
  2. Map<String, dynamic>? params,
  3. B? body,
  4. T fromJson(
    1. 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);
  }
}