diff --git a/docs/auto-page.md b/docs/auto-pull.md similarity index 100% rename from docs/auto-page.md rename to docs/auto-pull.md diff --git a/docs/config.md b/docs/config.md index ea8eb19ad..5c696ae24 100644 --- a/docs/config.md +++ b/docs/config.md @@ -48,7 +48,7 @@ | setDebug | 是否输出网络日志, 和`LogRecordInterceptor`互不影响 | | setSSLCertificate | 配置Https证书 | | trustSSLCertificate | 信任所有Https证书 | -| setConverter | [配置数据转换器](customizer-converter.md), 将网络返回的数据转换成你想要的数据结构 | +| setConverter | [配置数据转换器](converter-customize.md), 将网络返回的数据转换成你想要的数据结构 | | setRequestInterceptor | [配置请求拦截器](interceptor.md), 适用于添加全局请求头/参数 | | setErrorHandler | [配置全局错误处理](error-global.md) | | setDialogFactory | [配置全局对话框](auto-dialog.md) | diff --git a/docs/customizer-converter.md b/docs/converter-customize.md similarity index 100% rename from docs/customizer-converter.md rename to docs/converter-customize.md diff --git a/docs/convert-special.md b/docs/converter-struct.md similarity index 100% rename from docs/convert-special.md rename to docs/converter-struct.md diff --git a/docs/converter.md b/docs/converter.md index 9dd34c375..b5c26b0d1 100644 --- a/docs/converter.md +++ b/docs/converter.md @@ -1,16 +1,16 @@ -Net支持请求返回的数据类型取决于你自己的转换器实现(即理论上支持返回任何对象): +Net支持请求返回的数据类型取决于你自己的转换器实现 # Get<任何对象>("path").await() -如果不自定义转换器默认支持返回以下数据类型 +默认转换器支持返回以下数据类型 | 函数 | 描述 | |-|-| | String | 字符串 | | ByteArray | 字节数组 | -| ByteString | 内部定义的一种字符串对象 | +| ByteString | 更多功能的字符串对象 | | File | 文件对象, 这种情况其实应当称为[下载文件](download-file.md) | -| Response | 最基础的, 包含全部响应信息的对象(响应体/响应头/请求信息等) | +| Response | 所有响应信息(响应体/响应头/请求信息等) | 使用示例 @@ -20,10 +20,9 @@ scopeNetLife { } ``` -??? summary " -默认使用的是: [NetConverter.DEFAULT](https://github.com/liangjingkanji/Net/blob/master/net/src/main/java/com/drake/net/convert/NetConverter.kt)" -```kotlin -interface NetConverter { +??? example "转换器实现非常简单" + ```kotlin title="NetConverter.kt" linenums="1" + interface NetConverter { @Throws(Throwable::class) fun onConvert(succeed: Type, response: Response): R? @@ -48,4 +47,4 @@ interface NetConverter { } ``` -假设这里没有你需要的数据类型请[自定义转换器](/converter/#_3)(例如返回Json或Protocol) \ No newline at end of file +假设不支持你需要的数据类型, 例如JSON/ProtoBuf/Bitmap等请[自定义转换器](/converter/#_3) \ No newline at end of file diff --git a/docs/error-exception.md b/docs/error-throws.md similarity index 100% rename from docs/error-exception.md rename to docs/error-throws.md diff --git a/docs/error-default.md b/docs/error.md similarity index 93% rename from docs/error-default.md rename to docs/error.md index 0af61ee20..a1037f3dc 100644 --- a/docs/error-default.md +++ b/docs/error.md @@ -12,7 +12,7 @@ Net具备完善的错误处理机制, 能捕获大部分网络请求或者异步 如果捕获到错误默认会执行以下操作 -- `Logcat`中会输出详细的异常堆栈信息, 如果想要输出更详细内容请阅读[自定义异常](error-exception.md) +- `Logcat`中会输出详细的异常堆栈信息, 如果想要输出更详细内容请阅读[自定义异常](error-throws.md) - `Toast`吐司错误异常信息, 如果想要自定义或者国际化错误文本请阅读[自定义错误提示](error-tip.md)
diff --git a/docs/index.md b/docs/index.md index e0a316a36..337c9b28b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -85,9 +85,10 @@ scopeNetLife { } ``` -详细查看[转换器](customizer-converter.md), 非以上类型要求[自定义转换器](customizer-converter.md) +详细查看[转换器](converter.md), 非以上类型要求[自定义转换器](converter-customize.md) --- [下载Apk](https://github.com/liangjingkanji/Net/releases/latest/download/net-sample.apk){ .md-button } [下载源码](https://github.com/liangjingkanji/Net.git){ .md-button } [示例代码](https://github.com/liangjingkanji/Net/tree/master/sample/src/main/java/com/drake/net/sample/ui/fragment){ .md-button } +[项目实战](https://github.com/liangjingkanji/Net/tree/master/sample/src/main/java/com/drake/net/sample/ui/fragment){ .md-button } diff --git a/docs/read-cache.md b/docs/read-cache.md deleted file mode 100644 index a937006ef..000000000 --- a/docs/read-cache.md +++ /dev/null @@ -1,59 +0,0 @@ -Net_v2基于[Kalle](https://github.com/yanzhenjie/Kalle)开发, 支持Kalle的9种缓存模式 - -缓存模式要求在初始化的时候开启 - -```kotlin -NetConfig.initialize("https://github.com/liangjingkanji/Net/", this) { - cacheEnabled() // 开启缓存 -} -``` - -=== "请求缓存或网络" - ```kotlin - scopeNetLife { - // 先读取缓存, 如果缓存不存在再请求网络 - tvFragment.text = Get("api", cache = CacheMode.READ_CACHE_NO_THEN_NETWORK).await() - Log.d("日志", "读取缓存") - } - ``` -=== "读取缓存然后请求网络" - - ```kotlin - scopeNetLife { - // 然后执行这里(网络请求) - tvFragment.text = Post("api", cache = CacheMode.NETWORK_YES_THEN_WRITE_CACHE).await() - Log.d("日志", "网络请求") - }.preview { - // 先执行这里(仅读缓存), 任何异常都视为读取缓存失败 - tvFragment.text = Get("api", cache = CacheMode.READ_CACHE).await() - Log.d("日志", "读取缓存") - } - ``` - -预读模式本质上就是创建一个`preview`附加作用域, 里面的所有异常崩溃都会被静默捕捉(算作缓存失败), 会优先于`scope*`执行, 然后再执行scope本身, -而且一旦缓存读取成功(`preview`内部无异常)即使网络请求失败也可以不提醒用户任何错误信息(可配置) - -
- -> `preview`并没有说只能用在网络缓存上, 也可以用于其他的处理场景 - -
- -## 缓存模式 - -缓存模式属于`CacheMod`枚举, 建议开发者浏览缓存模式的源码和注释,有助于理解和更好的使用缓存模式。 - -| 常量 | 描述 | -| ------------------------------ | ------------------------------------------------------------ | -| `HTTP` | 发起请求前如果本地已经有缓存,如果缓存未过期则返回缓存数据,
如果过期则带上缓存头去服务器做校验。如果服务器响应304则返回缓存数据,否则读取服务器数据,
根据服务器响应头来决定是否写入缓存数据 | -| `HTTP_YES_THEN_WRITE_CACHE` | 发起请求前如果本地已经有缓存则带缓存头,服务器响应304才返回缓存数据,否则读取服务器数据,
并写入缓存数据 | -| `NETWORK` | 发起请求前不管本地是否有缓存,都不会带上缓存头,
不论服务器响应头如何,绝不写入缓存数据 | -| `NETWORK_YES_THEN_HTTP` | 发起请求前不管本地是否有缓存,都不会带上缓存头,
根据服务器响应头来决定是否写入缓存数据 | -| `NETWORK_YES_THEN_WRITE_CACHE` | 发起请求前不管本地是否有缓存,都不会带上缓存头,
请求成功后写入缓存数据 | -| `NETWORK_NO_THEN_READ_CACHE` | 发起请求前不管本地是否有缓存,都不会带上缓存头,请求失败后尝试读取缓存,
根据服务器响应头来决定是否写入缓存数据 | -| `READ_CACHE ` | 仅读取缓存 | -| `READ_CACHE_NO_THEN_NETWORK` | 读取缓存,如果缓存不存在就请求网络,
不写入缓存数据 | -| `READ_CACHE_NO_THEN_HTTP` | 先读取缓存,如果缓存不存在就请求网络,
根据服务器响应头来决定是否写入缓存数据 | -| `READ_CACHE_NO_THEN_NETWORK_THEN_WRITE_CACHE` | 先本地有缓存则读取缓存,如果没有缓存则读取网络并且写入缓存,
该模式请求成功后会永久使用缓存, 但你可以指定动态的cacheKey来让缓存失效
例如一天后失效, 可以做到客户端完全控制缓存 | - -
\ No newline at end of file diff --git a/docs/exception-track.md b/docs/track.md similarity index 100% rename from docs/exception-track.md rename to docs/track.md diff --git a/docs/updates.md b/docs/updates.md index 009156d46..ad79871f2 100644 --- a/docs/updates.md +++ b/docs/updates.md @@ -241,7 +241,7 @@ - 修复未知的TypeToken访问权限问题 ## 3.0.6 -- 所有Json解析框架都可以解析`List`等嵌套泛型数据结构: [特殊结构解析](convert-special.md) +- 所有Json解析框架都可以解析`List`等嵌套泛型数据结构 ## 3.0.5 - 修复Path编码问题 diff --git a/mkdocs.yml b/mkdocs.yml index 871cc4863..4c82018bd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -73,24 +73,24 @@ nav: - 全局配置: config.md - 请求结果: - 转换器: converter.md - - 自定义转换器: customizer-converter.md - - 自定义结构解析: convert-special.md + - 自定义转换器: converter-customize.md + - 自定义结构解析: converter-struct.md - Kotlin-Serialization: kotlin-serialization.md - 数据类生成插件: model-generate.md - 自动化: - 自动加载框: auto-dialog.md - 自动缺省页: auto-state.md - 自动下拉刷新: auto-refresh.md - - 自动分页加载: auto-page.md + - 自动分页加载: auto-pull.md - 切换线程: thread.md - ViewModel: view-model.md - - 异常追踪: exception-track.md + - 异常追踪: track.md - 错误处理: - - 默认错误处理: error-default.md + - 默认错误处理: error.md - 单例错误捕获: error-single.md - 全局错误捕获: error-global.md - 自定义错误提示: error-tip.md - - 自定义异常抛出: error-exception.md + - 自定义异常抛出: error-throws.md - OkHttpClient: okhttp-client.md - 拦截器: interceptor.md - Https证书: https.md diff --git a/sample/proguard-rules.pro b/sample/proguard-rules.pro index bc5d812e1..481bb4348 100644 --- a/sample/proguard-rules.pro +++ b/sample/proguard-rules.pro @@ -1,5 +1,5 @@ # Add project specific ProGuard rules here. -# You can control the setKalle of applied configuration files using the +# You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see