Browse Source

更新转换器文档

drake 3 years ago
parent
commit
96bab734fa
2 changed files with 58 additions and 23 deletions
  1. 53 18
      docs/converter.md
  2. 5 5
      mkdocs.yml

+ 53 - 18
docs/converter.md

@@ -1,28 +1,59 @@
-如果你想要网络请求直接返回对应的Bean或者说POJO类你就要创建自定义的转换器, 来使用JSON解析框架处理你的数据(当然你可能是使用的protocol等其他数据格式)
+网络请求响应被封装到Response对象中, 普通接口我们需要读取映射到数据模型对象中
 
-在Net中转换器NetConverter负责数据解析的工作, 自定义转换器即实现NetConverter接口即可
+Net使用泛型指定返回数据类型
 
-> 你的业务可能需要请求参数加密或者拼接一串特殊含义的参数, 或者响应信息需要解密. 请不要尝试封装Post或者Get等请求函数(这是蠢材做法), 自定义拦截器和转换器可以应对任何项目需求.
+```kotlin
+
+```
+
+## 默认支持类型
+
+默认使用的是: [NetConverter.DEFAULT](https://github.com/liangjingkanji/Net/blob/master/net/src/main/java/com/drake/net/convert/NetConverter.kt)
+
+| 函数 | 描述 |
+|-|-|
+| String | 字符串 |
+| ByteArray | 字节数组 |
+| ByteString | 内部定义的一种字符串对象 |
+| Response | 最基础的响应 |
+| File | 文件对象, 这种情况其实应当称为`下载文件` |
+
+
+> 你的业务可能需要参数加密解密或者拼接参数, 请不要尝试封装Post或者Get等请求函数(这不是一个好主意), 自定义拦截器和转换器可以应对任何项目需求
 
-- 数据解密
-- 解析JSON
-- 判断请求是否成功
 
 <br>
 
-自定义转换器Demo截图
+Demo截图预览
 
-<img src="https://i.imgur.com/x4P47UI.png" width="300"/>
+<img src="https://i.loli.net/2021/05/18/yUBmka6AjKsVleP.png" width="300"/>
 
 <br>
 
 ## 创建转换器
 
-一般情况我们可以直接继承JSONConvert(因为一般接口使用的是JSON返回)
+一般业务我们可以直接继承[JSONConverter](https://github.com/liangjingkanji/Net/blob/master/net/src/main/java/com/drake/net/convert/JSONConvert.kt)
+使用自己的JSON解析器解析数据, 自定义需求可以直接实现[NetConverter](https://github.com/liangjingkanji/Net/blob/master/net/src/main/java/com/drake/net/convert/NetConverter.kt)
+
+添加依赖
+
+```kotlin
+
+```
+
+=== "Kotlin-Serialization"
+
+    [Kotlin-Serialization GitHub](https://github.com/Kotlin/kotlinx.serialization)
+
+    由于代码量比较重可以查看源码或者Demo: [SerializationConverter](https://github.com/liangjingkanji/Net/blob/master/sample/src/main/java/com/drake/net/sample/converter/SerializationConverter.kt)
+
+    SerializationConverter和JSONConverter代码差不多
 
 === "Gson"
+
+    [GSON  GitHub](https://github.com/google/gson)
     ```kotlin
-    class GsonConvert : DefaultConvert(code = "code", message = "msg", success = "200") {
+    class GsonConvert : JSONConvert(code = "code", message = "msg", success = "200") {
         val gson = GsonBuilder().serializeNulls().create()
 
         override fun <S> String.parseBody(succeed: Type): S? {
@@ -31,19 +62,23 @@
     }
     ```
 === "Moshi"
+
+    [Moshi GitHub](https://github.com/square/moshi)
     ```kotlin
-    class MoshiConvert : DefaultConvert(code = "code", message = "msg", success = "200") {
+    class MoshiConvert : JSONConvert(code = "code", message = "msg", success = "200") {
         val moshi = Moshi.Builder().build()
 
         override fun <S> String.parseBody(succeed: Type): S? {
-
             return moshi.adapter<S>(succeed).fromJson(this)
         }
     }
     ```
 === "FastJson"
+
+    [FastJson GitHub](https://github.com/alibaba/fastjson)
+
     ```kotlin
-    class FastJsonConvert : DefaultConvert(code = "code", message = "msg", success = "200") {
+    class FastJsonConvert : JSONConvert(code = "code", message = "msg", success = "200") {
 
         override fun <S> String.parseBody(succeed: Type): S? {
             return JSON.parseObject(this, succeed)
@@ -51,9 +86,9 @@
     }
     ```
 
-- 请自己手动添加[Moshi](https://github.com/square/moshi)或者[Gson](https://github.com/google/gson)的依赖
-- Moshi支持Kotlin构造参数默认值, 但是如果Json中字段为null依然会覆盖默认值为null
-- 推荐使用官方的序列化框架: `kotlinx.Serialization`, 可以解析返回List, 支持Kotlin构造参数默认值, 可以非空覆盖
+1. 使用对应转换器添加对应依赖
+2. 推荐使用 `kotlinx.Serialization`, 其可解析[任何泛型](kotlin-serialization.md)
+3. 请阅读Demo源码
 
 | 转换器参数 | 描述 |
 |-|-|
@@ -72,14 +107,14 @@
 === "全局"
     ```kotlin hl_lines="2"
     initNet("http://github.com/") {
-        setConverter(GsonConvert())
+        setConverter(SerializationConverter())
     }
     ```
 === "单例"
     ```kotlin hl_lines="3"
     scopeNetLife {
         tv_fragment.text = Get<String>("api"){
-            converter = JsonConvert()
+            converter = SerializationConverter()
         }.await()
     }
     ```

+ 5 - 5
mkdocs.yml

@@ -47,17 +47,17 @@ nav:
   - 全局错误处理: error-handle.md
   - 拦截器: interceptor.md
   - Https证书: https.md
-  - 转换器: converter.md
+  - 自定义转换器:
+      - 创建转换器: converter.md
+      - 任何泛型: kotlin-serialization.md
+      - 转换Data字段: convert-data-field.md
+      - 转换JSON数组: convert-json-array.md
   - 异常追踪: exception-track.md
   - 自动化:
       - 自动加载框: auto-dialog.md
       - 自动缺省页: auto-state.md
       - 自动下拉刷新: auto-refresh.md
       - 自动分页加载: auto-page.md
-  - 转换数据:
-      - 任何泛型: kotlin-serialization.md
-      - 转换Data字段: convert-data-field.md
-      - 转换JSON数组: convert-json-array.md
   - 切换线程: switch-dispatcher.md
   - 标签: tag.md
   - 上传文件: upload-file.md