当前位置: 首页 > news >正文

武夷山景区网站建设优点wordpress浏览插件

武夷山景区网站建设优点,wordpress浏览插件,网站建设与维护一般需要多少钱每年,宽屏网站和普通网站文章目录 效果使用ResponseEntity类DioManager封装_onResponse / _onDioException 的设计Response的处理catch处理 效果 请求成功/失败/异常的日志输出效果 成功: 失败:500 失败:404 网络异常: 使用 举个使用的例子, 在调用 DioManager的时候, 直接通过返回值的状态, 来… 文章目录 效果使用ResponseEntity类DioManager封装_onResponse / _onDioException 的设计Response的处理catch处理 效果 请求成功/失败/异常的日志输出效果 成功: 失败:500 失败:404 网络异常: 使用 举个使用的例子, 在调用 DioManager的时候, 直接通过返回值的状态, 来处理各个情况,不用在 try{}catch{}里面各写一遍处理逻辑, 比如上图,就是直接调用的封装的API ResponseEntity res await DioManager().requestGet(HttpApi.user_record, param: {openid: okqbz5K-4UoymmukFtxyQAyImKm0,uid: 88030,subject: 20,unionid: ofJJv6M45ChFhuUZyVaLXwt07M4g,});res.toLog();直接同步获取了请求的结果,通过 ResponseEntity 来处理本次请求的各项情况(如上4图) ResponseEntity类 提供了 泛型T的data属性, 提供了 tag, 用于处理请求的不同情况 提供了 toString/ toLog函数 , 用于查看请求/返回/状态码/请求参数等 class ResponseEntityT {/// 常规的response.data的返回字段late String? msg;late int? code;T? data;/// response.data中,自定以追加的一些字段(方便日志查看)late int? tag; // 业务tag 0通信OK业务未跑通 1通信OK业务跑通 2通信失败(各类原因...) 9解析/socket等异常late String? method; // 请求的 methodlate String? baseUrl; // 请求的host地址 - 方便打印日子产看环境late String? path; // 请求地址late String? desc; // 自定义的报文描述-便于判断请求情况late MapString, dynamic? queryParameters; // 请求的参数ResponseEntity(this.code, this.msg, this.data, this.tag, this.method, this.baseUrl, this.path, this.desc, this.queryParameters);ResponseEntity.initFromJson(MapString, dynamic jsonMap) {code jsonMap.containsKey(ConstantUtil.code) ? jsonMap[ConstantUtil.code] as int? : 0;msg jsonMap.containsKey(ConstantUtil.msg) ? jsonMap[ConstantUtil.msg] as String? : ;// 存在dataif (jsonMap.containsKey(ConstantUtil.data)) {data jsonMap[ConstantUtil.data] as T;}/// response自定以追加的一些字段处理tag jsonMap.containsKey(ConstantUtil.tag) ? jsonMap[ConstantUtil.tag] : 9;method jsonMap.containsKey(ConstantUtil.method) ? jsonMap[ConstantUtil.method] : ;baseUrl jsonMap.containsKey(ConstantUtil.baseUrl) ? jsonMap[ConstantUtil.baseUrl] : ;path jsonMap.containsKey(ConstantUtil.path) ? jsonMap[ConstantUtil.path] : ;queryParameters jsonMap.containsKey(ConstantUtil.queryParameters) ? jsonMap[ConstantUtil.queryParameters] : null;desc jsonMap.containsKey(ConstantUtil.desc) ? jsonMap[ConstantUtil.desc] : ;}/// 手动重写toString 方法,方便查看日志overrideString toString() {var _code code:$code\n;var _msg msg:$msg\n;var _data json.encode(data).toString();var _dataString data:$_data\n;var _tag tag:$tag\n;var _method method:$method\n;var _baseUrl baseUrl:$baseUrl\n;var _path path:$path\n;var _desc path:$desc\n;var _queryParameters jsonEncode(queryParameters);var _queryParametersString queryParameters:$_queryParameters\n;return _code _msg _dataString _tag _method _baseUrl _path _desc _queryParametersString;}/// 提供自带的打印函数void toLog() {LoggerUtil().d(toString());} }DioManager封装 对DioManager进行单例模式处理 /// dio管理类的单例的实现 --------------------------------------------------// 定义私有管理对象 _singletonstatic final DioManager _singleton DioManager._();// 私有对象构造实现DioManager._() {// dio初始化 - 配置全局options - 具体事项先省略}// 声明并完成初始化的私有变量(_singleton),// 通过 DioManager的工厂函数(factory关键字) ,进行单例模式返回factory DioManager() _singleton;提供_request通用方法 /// request 通用处理函数 -----------------------------------------------------------/// get 对应的是 queryParam/// post 对应的是 data/// 通过 对 try/catch 的处理, 均异步返回有效的 BaseResponseEntityT 实例,/// 外部调用时候,仅获取数据是, 可以不必包裹 try/catch,FutureResponseEntityT _requestT(String method,String apiPath, {MapString, dynamic? param,CancelToken? cancelToken,Options? options,}) async {try {// 通用请求Responsedynamic response await _dio.request(apiPath,data: param, queryParameters: param, cancelToken: cancelToken, options: _loadOptions(method, options));// 通过 _onResponse()函数转换response// 自定义返回的data内容, 除了原有的 code/msg/data信息, 新增desc/tag等返回数据response _onResponse(response);return ResponseEntityT.initFromJson(response.data);} on DioException catch (err) {// 通过对DioException的解析,返回自定义的BaseResponseEntity实例return _onDioException(err) as ResponseEntityT;}} _onResponse / _onDioException 的设计 根据Request的情况, 把交互场景分为了四类 12: statusCode 200 , 再区分业务code是否OK 3: statusCode !200, 可能是 404 /500 等情况 4: 断网等异常情况 其中 123, 都是通过_onResponse处理 4通过_onDioException处理, 这里的catch不再直接抛出, 用ResponseEntity来统一做返回格式处理 (DioException) Response的处理 class ResponseEntityT {/// 常规的response.data的返回字段late String? msg;late int? code;T? data;/// response.data中,自定以追加的一些字段(方便日志查看)late int? tag; // 业务tag 0通信OK业务未跑通 1通信OK业务跑通 2通信失败(各类原因...) 9解析/socket等异常late String? method; // 请求的 methodlate String? baseUrl; // 请求的host地址 - 方便打印日子产看环境late String? path; // 请求地址late String? desc; // 自定义的报文描述-便于判断请求情况late MapString, dynamic? queryParameters; // 请求的参数ResponseEntity(this.code, this.msg, this.data, this.tag, this.method, this.baseUrl, this.path, this.desc, this.queryParameters);ResponseEntity.initFromJson(MapString, dynamic jsonMap) {code jsonMap.containsKey(ConstantUtil.code) ? jsonMap[ConstantUtil.code] as int? : 0;msg jsonMap.containsKey(ConstantUtil.msg) ? jsonMap[ConstantUtil.msg] as String? : ;// 存在dataif (jsonMap.containsKey(ConstantUtil.data)) {data jsonMap[ConstantUtil.data] as T;}/// response自定以追加的一些字段处理tag jsonMap.containsKey(ConstantUtil.tag) ? jsonMap[ConstantUtil.tag] : 9;method jsonMap.containsKey(ConstantUtil.method) ? jsonMap[ConstantUtil.method] : ;baseUrl jsonMap.containsKey(ConstantUtil.baseUrl) ? jsonMap[ConstantUtil.baseUrl] : ;path jsonMap.containsKey(ConstantUtil.path) ? jsonMap[ConstantUtil.path] : ;queryParameters jsonMap.containsKey(ConstantUtil.queryParameters) ? jsonMap[ConstantUtil.queryParameters] : null;desc jsonMap.containsKey(ConstantUtil.desc) ? jsonMap[ConstantUtil.desc] : ;}/// 手动重写toString 方法,方便查看日志overrideString toString() {var _code code:$code\n;var _msg msg:$msg\n;var _data json.encode(data).toString();var _dataString data:$_data\n;var _tag tag:$tag\n;var _method method:$method\n;var _baseUrl baseUrl:$baseUrl\n;var _path path:$path\n;var _desc path:$desc\n;var _queryParameters jsonEncode(queryParameters);var _queryParametersString queryParameters:$_queryParameters\n;return _code _msg _dataString _tag _method _baseUrl _path _desc _queryParametersString;}/// 提供自带的打印函数void toLog() {LoggerUtil().d(toString());} } catch处理 /// 对 DioException进行解析,基本覆盖大部分错误类型了ResponseEntity _onDioException(DioException err) {var errType err.type;var path err.requestOptions.path;var data err.requestOptions.data;var queryParameters err.requestOptions.queryParameters;var baseUrl err.requestOptions.baseUrl;var method err.requestOptions.method;ResponseEntity baseResponseEntity ResponseEntity(0, , data, 9, method, baseUrl, path, , queryParameters);///连接超时if (errType DioExceptionType.connectionTimeout) {baseResponseEntity.msg 连接超时;baseResponseEntity.desc 连接超时;}///发送超时if (errType DioExceptionType.sendTimeout) {baseResponseEntity.msg 发送超时;baseResponseEntity.desc 发送超时;}///接收超时if (errType DioExceptionType.receiveTimeout) {baseResponseEntity.msg 接收超时;baseResponseEntity.desc 接收超时;}///证书损坏if (errType DioExceptionType.badCertificate) {baseResponseEntity.msg 证书损坏;baseResponseEntity.desc 证书损坏;}///返回内容问题if (errType DioExceptionType.badResponse) {baseResponseEntity.msg 返回内容问题;baseResponseEntity.desc 返回内容问题;}///请求取消if (errType DioExceptionType.cancel) {baseResponseEntity.msg 请求取消;baseResponseEntity.desc 请求取消;}///连接错误-无网络if (errType DioExceptionType.connectionError) {baseResponseEntity.msg 连接错误-无网络;baseResponseEntity.desc 连接错误-无网络;}///未知错误if (errType DioExceptionType.unknown) {baseResponseEntity.msg 未知错误;baseResponseEntity.desc 未知错误;}return baseResponseEntity;} 针对ResponseEntity中, T? data 的处理, 稍后补上, 先走通请求… — 数据转模型看这个 [Flutter3] Json转dart模型举例 对于泛型T的处理, 直接把 json转model的model类型传入泛型就可获取数据
http://www.pierceye.com/news/920564/

相关文章:

  • 爱网站站长工具android软件开发下载
  • 网站被入侵宁波妇科医生推荐
  • 移动网站建设学习新能源汽车价格表2021
  • 如何做视频会员网站工商注册公司需要提供的资料
  • 网站做多久能盈利网站设计定做
  • 微信网站后台功能哪里买域名便宜
  • 合肥重点工程建设局密云seo排名优化培训
  • 二学一做网站福建建设资格执业注册管理中心网站
  • vps 网站上传做网站费用需要分摊吗
  • 建网站 考虑oou淘宝客图片wordpress模板
  • 玩具网站开发背景小说网站开发文档
  • 遵义网站设计公司制作网站需要
  • 做广告公司网站建设价格成都seo招聘
  • 网站建设与规划试卷友联互换
  • 宠物网站建设费用天元建设集团有限公司是国企吗
  • 南宁在百度上建网站网站设计怎么做链接
  • 多多进宝怎么做自己网站沈阳正规的男科医院
  • 做简历的网站叫什么软件外贸网站建设工作计划
  • 关键词搜索引擎网站公司要求做网站
  • 如何判断网站开发语言浙江省网站建设报价
  • 建设一个网站思路有关网站建设的网站
  • 网站文明建设工程包括做电影网站什么后果
  • 邯郸市有搞网站服服务的吗怎样免费建设免费网站
  • 衡水学校网站建设wordpress后台中文安装
  • 英文网站建站模板电子名片制作app
  • 沧州网站建设多少钱网站多域名
  • 自己做的网站怎么被搜录免费在线观看韩国电视剧网站推荐
  • 网站推广策划案格式及范文专业做网站排名多少钱
  • 做网站优化多少钱南京华典建设有限公司网站
  • 建网站是什么专业类别海洋高端的专业做网站