yknetworking 0.1.6 copy "yknetworking: ^0.1.6" to clipboard
yknetworking: ^0.1.6 copied to clipboard

yknetworking.

CHANGELOG #

0.1.6 #

Breaking Changes #

  • Safe API 入口合并。 safeGet()/safePost()/safePut()/safeDelete()/safePatch() 合并为统一的 safeRequest(method:)。调用方需将 api.safeGet('/t') 改为 api.safeRequest('/t', method: YKNetworkingMethod.get)
  • YKNetworkException 新增 retryContext 字段。 throwing API 的 catch 分支可直接从异常获取重试上下文,无需通过 safe API。

Internal #

  • throwing API(get()/post()/...)不再中转 safe* + _unwrap,改为直接调用 executeOrThrow,错误通过 Future 原生 error 通道传递。
  • YKBaseNetworking 新增 executeOrThrow/executeUploadOrThrow/executeDownloadOrThrow 方法。
  • _runOnErrorChain 创建的异常携带 RetryContext,使 throwing API 和 safe API 的异常一致携带重试信息。
  • 移除 _unwrap 方法。
  • 测试覆盖:39 个测试,包含 .catchError() Future 错误通道验证。

0.1.5 #

  • YKInterceptorResponse.datafinal 改为可变,允许响应拦截器修改返回数据

0.1.4 #

Breaking Changes #

  • API 重构:直接返回 Future<T> get()/post()/put()/delete()/patch()/request()/upload()/download()/retry() 现在直接返回数据,失败时抛出 YKNetworkException。旧的非抛出行为请使用对应的 safe* 变体(如 safeGet()Future<YKResult<T>>)。
  • Dart SDK >=3.0.0 必须(sealed class 需要)。
  • 删除 YKNetworking 构造函数回调。 handleData/dynamicHeader/dynamicParams/errorCallBack/showLoadingCallBack/cacheRequest 已移除,改用拦截器系统替代。
  • 删除 disableDynamicHeader/disableDynamicParams/disableHandleData 布尔值。 替换为基于类型的 skipInterceptors: [InterceptorRef]
  • YkNetworkConnectivity 重命名为 YKNetworkConnectivity 访问方式从 instance 改为 getInstance(),与 YKNetworkingConfig 保持一致。
  • 删除 YKNetworkingResponse 替换为 YKResult<T> 密封类(safe API)。
  • 删除 YkNetworkingInterceptor mixin。 替换为 YKInterceptor 抽象类。
  • retry()headers 参数必传,强制开发者重新提供凭据。

New Features #

  • 拦截器链引擎: 实例级注册,优先级排序,请求/响应/错误三阶段执行。YKInterceptorType 确保 O(N) 而非 O(3N)。
  • 内置拦截器: DynamicHeaderInterceptorDynamicParamsInterceptorHandleDataInterceptorRedirectInterceptor
  • 重试系统: 拦截器内重试(onError + YKRetryHandler 回调)和外部重试(api.retry())。
  • 请求取消: 通过 CancelToken 支持,safe API 返回 YKCancelled<T>
  • 安全 API(safe* 变体): 返回 YKResult<T> 密封类(YKSuccess<T> / YKFailure<T> / YKCancelled<T>),需要完全控制时使用。
  • 类型安全的 skipInterceptors 按名称(ByName)或类型(ByType<T>)跳过,链压缩。
  • ClearInterceptors() 保护: 设置 isProtected: true 的拦截器不会被清除。
  • 非幂等拦截器: 设置 isIdempotent: false 的拦截器在重试时自动跳过。
  • dispose() 生命周期: YKNetworkingYKInterceptor 均支持,取消进行中的请求并释放资源。
  • 结构化错误: YKNetworkException,包含 YKErrorType 枚举(connectionTimeout / receiveTimeout / sendTimeout / dnsFailure / tlsFailure / clientError / serverError / redirectRequired / cancelled / unknown)。
  • DELETE 和 PATCH 方法。
  • RetryContext 最小重试信息,不含 headers(凭据安全)。
  • @visibleForTesting YKNetworkingConfig.resetForTesting() 用于测试隔离。

Internal #

  • 拦截器链精简为单一私有流水线 _executeWithChain,消除 execute/executeUpload/executeDownload 之间的代码重复。
  • 修复 shared dio.options.baseUrl 的并发请求竞态条件。
  • 修复 _runOnErrorChainredirectRequired 异常被静默吞没的问题。
  • 修复 as T 强制转换:类型不匹配现在会返回 YKFailure 而非未捕获的 TypeError
  • YKNetworkConnectivity 流订阅正确存储并可在 dispose() 中取消;setup() 已实现幂等。
  • DynamicHeaderInterceptor/DynamicParamsInterceptor 使用 ??= 而非 ?.addAll 以避免静默丢弃数据。
  • maxRetries 断言为非负数,负值会被钳位到 0。
  • downloadPath 守卫同时检查 null 和空字符串。

0.1.3 #

  • 新增 YKNetworkConnectivity

0.1.2 #

  • 更新 contentType

0.1.1 #

  • 修复 contentType
  • 修复 bug
  • 新增 disableDynamicHeader
  • 新增 disableDynamicParams
  • 新增 disableHandleData

0.1.0 #

  • 新增 contentType
  • 修复 bug
1
likes
115
points
238
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

yknetworking.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

connectivity_plus, dio, flutter

More

Packages that depend on yknetworking