requestLocalFilePath static method
Future<ResponseModel>
requestLocalFilePath(
- String apiPath, {
- required CJNetworkClientGetSuccessResponseModelBlock getSuccessResponseModelBlock,
Implementation
static Future<ResponseModel> requestLocalFilePath(
String apiPath, {
required CJNetworkClientGetSuccessResponseModelBlock
getSuccessResponseModelBlock,
}) async {
if (localApiDirBlock == null) {
throw Exception("请先设置 localApiDirBlock");
}
String localApiFileDir = localApiDirBlock!(apiPath);
String localFileName = apiPath.splitMapJoin(
"/",
onMatch: (Match match) {
return ":";
},
);
String localFilePath =
localApiFileDir.appendPathString("$localFileName.json");
/* // 以下判断文件是否存在的方式,不准确
File pdf = File(localFilePath);
bool exist = await pdf.exists();
if (exist == false) {
localFilePath = localApiFileDir.appendPathString("$localFileName");
pdf = File(localFilePath);
exist = await pdf.exists();
}
*/
String responseString = await rootBundle.loadString(localFilePath);
Map<String, dynamic> responseMap = json.decode(responseString);
/*
var errorCode = responseMap['code'];
var msg = responseMap['msg'];
dynamic result = responseMap["data"];
ResponseModel responseModel = ResponseModel(
statusCode: errorCode,
message: msg,
result: result,
);
*/
ReqOptions reqOptions = ReqOptions(
baseUrl: localApiHost,
path: apiPath,
requestTime: DateTime.now(),
);
ResOptions resOptions = ResOptions(
statusCode: 0,
data: responseMap,
requestOptions: reqOptions,
);
/*
NetOptions apiInfo = NetOptions(
reqOptions: reqOptions,
resOptions: resOpt,
getSuccessResponseModelBlock: getSuccessResponseModelBlock,
);
*/
String fullUrl = reqOptions.fullUrl;
try {
ResponseModel responseModel = getSuccessResponseModelBlock(
fullUrl,
200,
responseMap,
false,
resOptions: resOptions,
);
// 此类不会走拦截器,也就不会有 headers 等信息
// String responseLogString =
// FormatterUtil.convert(responseMap, 0, isObject: true);
// DioLogInterceptor.logApi(apiInfo, ApiProcessType.response);
return responseModel;
} catch (e) {
String message = '请求$apiPath的时候,发生网络错误,未设置json文件';
/*
if (e is NoSuchMethodError) {
// do something
}
// String message = '请求$apiPath的时候,发生网络错误,未设置json文件${e.message}';
String responseLogString = "Error:接口本地模拟发生错误:$message"; // 此类不会走拦截器
// 此类不会走拦截器,也就不会有 headers 等信息
// // DioLogUtil.logApi(apiPath, responseLogString, ApiProcessType.error, ApiLogLevel.error);
ReqOptions reqOptions = ReqOptions(
baseUrl: localApiHost,
path: apiPath,
);
ErrOptions errOptions = ErrOptions(
message: responseLogString,
type: NetworkErrorType.other,
requestOptions: reqOptions,
);
NetOptions apiInfo = NetOptions(
reqOptions: reqOptions,
errOptions: errOptions,
getSuccessResponseModelBlock: getSuccessResponseModelBlock,
);
*/
// DioLogInterceptor.logApi(apiInfo, ApiProcessType.error);
return ResponseModel.tryCatchErrorResponseModel(
message,
requestTime: reqOptions.requestTime,
errorTime: DateTime.now(),
);
}
}