https://www.jianshu.com/p/5ead0cf96642
Varios beneficios solicitudes de red del paquete:
1, para facilitar los parámetros unificadas de configuración de petición, como cabecera, el parámetro público, reglas cifrados
2, para facilitar la depuración, registro de impresión
3, el código para optimizar el rendimiento, al abuso de evitar en todas partes nuevo constructo único objeto mundial Ejemplo
4, simplificar solicitando paso, exponiendo sólo los datos de respuesta requeridos en respuesta a la corrección de errores unificado
5, la clase base encapsula la interfaz de datos, simplificado de análisis de proceso
resultados ejemplo:
definición HttpManager
La configuración general de una única forma de realización, la solicitud de configuración de parámetros, la GET configuración genérica \ POST, apoyo traspaso baseUrl
class HttpManager {
static HttpManager _instance = HttpManager._internal(); Dio _dio; factory HttpManager() => _instance; ///通用全局单例,第一次使用时初始化 HttpManager._internal({String baseUrl}) { if (null == _dio) { _dio = new Dio(new BaseOptions( baseUrl: Address.BASE_URL_RELEASE, connectTimeout: 15000)); _dio.interceptors.add(new LogsInterceptors()); _dio.interceptors.add(new ResponseInterceptors()); } } static HttpManager getInstance({String baseUrl}) { if (baseUrl == null) { return _instance._normal(); } else { return _instance._baseUrl(baseUrl); } } //用于指定特定域名,比如cdn和kline首次的http请求 HttpManager _baseUrl(String baseUrl) { if (_dio != null) { _dio.options.baseUrl = baseUrl; } return this; } //一般请求,默认域名 HttpManager _normal() { if (_dio != null) { if (_dio.options.baseUrl != Address.BASE_URL_RELEASE) { _dio.options.baseUrl = Address.BASE_URL_RELEASE; } } return this; } ///通用的GET请求 get(url, params, {noTip = false}) async { Response response; try { response = await _dio.get(url, queryParameters: params); } on DioError catch (e) { return resultError(e); } if (response.data is DioError) { return resultError(response.data['code']); } return response.data; } ///通用的POST请求 post(url, params, {noTip = false}) async { Response response; try { response = await _dio.post(url, data: params); } on DioError catch