Browse Source

| update README

drake 4 years ago
parent
commit
92b73c1b25

+ 54 - 131
README.md

@@ -106,8 +106,7 @@ implementation 'com.github.liangjingkanji:Net:2.2.3'
 
 ```kotlin
 scopeNetLife {
-  val data = Post<String>("https://raw.githubusercontent.com/liangjingkanji/BRV/master/README.md")
-  textView.text = data.await()
+    tv_fragment.text = Post<String>("api").await()
 }
 ```
 
@@ -119,52 +118,30 @@ scopeNetLife {
 
 ```kotlin
 scopeNetLife {
-
-  val data = Get<String>(
-    "https://raw.githubusercontent.com/liangjingkanji/BRV/master/README.md",
-    absolutePath = true
-  )
-
-  textView.text = data.await()
+    tv_fragment.text = Get<String>("api").await()
 }
 ```
 
 `Model` 泛型如果换成String, 将会在成功回调中得到字符串对象.
 
-
-
 ### 文件上传
 
 ```kotlin
 scopeNetLife {
-
-  val data = Post<String>(
-    "https://raw.githubusercontent.com/liangjingkanji/BRV/master/README.md",
-    absolutePath = true
-  ){
-    file("file", File())
-  }.await()
-
-  textView.text = data.await()
+    Post<String>("upload", requireContext().cacheDir.path) {
+        val saveFile = getFile()
+        file("file", saveFile)
+    }.await()
 }
 ```
 
-这是支持Kalle任何参数添加方式
-
 
 
 ### 文件下载
 
 ```kotlin
 scopeNetLife {
-  Download("/path", "下载目录"){
-
-    // 进度监听
-    onProgress { progress, byteCount, speed ->
-
-               }
-
-  }.await()
+    Download("download", requireContext().filesDir.path).await()
 }
 ```
 
@@ -183,13 +160,10 @@ Context.DownloadImage(url: String, with: Int = -1, height: Int = -1)
 示例
 
 ```kotlin
-scopeNetLife {
-
-  val data = DownloadImage(
-    "https://cdn.sspai.com/article/ebe361e4-c891-3afd-8680-e4bad609723e.jpg?imageMogr2/quality/95/thumbnail/!2880x620r/gravity/Center/crop/2880x620/interlace/1".
-    200,200
-  ).await()
-
+scopeDialog {
+    val file = DownloadImage(NetConfig.host + "download/img", 100, 100).await()
+    val uri = Uri.fromFile(file)
+    iv_img.setImageURI(uri)
 }
 ```
 
@@ -201,7 +175,7 @@ class App : Application() {
     override fun onCreate() {
         super.onCreate()
 
-        initNet("主机名"){
+        initNet("http://182.92.97.186/"){
 
             // 转换器, 也可以自己实现Convert或者复写DefaultConverter.
             converter(object : DefaultConverter() {
@@ -222,7 +196,7 @@ class App : Application() {
 在初始化的时候可以选择配置网络请求
 
 ```kotlin
-initNet("http://192.168.2.1") {
+initNet("http://182.92.97.186/") {
 
   // 默认错误处理
   onError {
@@ -383,9 +357,9 @@ fun LifecycleOwner.scopeLife(
 
 ```kotlin
 scopeNet {
-  post<Model>("/path"){
+  Post<Model>("api"){
     param("key", "value")
-  }
+  }.await()
 }
 ```
 
@@ -395,7 +369,7 @@ scopeNet {
 
 ```kotlin
 scopeNetLife {
-  post<Model>("/path"){
+  Post<Model>("api"){
     param("key", "value")
   }
 }
@@ -405,9 +379,12 @@ scopeNetLife {
 
 ### 自动加载对话框
 
-```
+```kotlin
 scopeDialog {
-
+    tv_fragment.text = Post<String>("dialog") {
+        param("u_name", "drake")
+        param("pwd", "123456")
+    }.await()
 }
 ```
 
@@ -417,12 +394,12 @@ scopeDialog {
 
 
 
-> 自定义全局对话框
+**自定义全局对话框**
 
 全局对话框设置通过NetConfig.onDialog设置
 
 ```kotlin
-initNet("http://localhost.com") {
+initNet("http://182.92.97.186/") {
   onDialog {
     ProgressDialog(it).apply { setMessage("正在加载中") } // 返回一个Dialog
   }
@@ -440,7 +417,7 @@ state.onRefresh {
   scope {
     // 异步作用域
 
-    val data = post<Model>("/path"){
+    val data = Post<Model>("api"){
       param("key", "value")
     }.await()
 
@@ -480,25 +457,17 @@ StateLayout使用`scope`函数开启作用域
 ```kotlin
 pageRefreshLayout.onRefresh { 
 
-  pageRefreshLayout.scope {
-
-    val result = Post<Model>("/path"){
-      param("key", "value")
-      param("page", index) // 页面索引使用pageRefreshLayout的属性index
-    }
+    pageRefreshLayout.scope {
 
-    val data = result.await().data
+        val data = Get<ListModel>("list") {
+            param("page", index) // index会自增
+        }.await().data
 
-    if (data.isEmpty()){
-      showEmpty()
-      return
-    }
-    
-    addData(data){
-      index < data.totalPage // 判断是否存在下一页
+        addData(data){
+            index < data.totalPage // 判断是否存在下一页
+        }
     }
-  }
-}.showLoading
+}.showLoading()
 ```
 
 此时下拉和上拉都会调用该回调`onRefresh`中的接口请求. 
@@ -519,16 +488,6 @@ showLoading属于现实缺省页中的加载页, 你也可以使用`autoRefresh(
 
 
 
-如果仅仅是自动完成下拉加载. 例如一般用户中心页面只需要自动处理下拉刷新的状态
-
-```
-pageRefreshLayout.scopeRefresh{
-
-}
-```
-
-
-
 Tip: PageRefreshLayout只要加载成功后即使后续请求失败也不会显示错误缺省页
 
 ### 错误处理
@@ -537,17 +496,12 @@ Tip: PageRefreshLayout只要加载成功后即使后续请求失败也不会显
 
 ```kotlin
 scopeDialog {
-
-  val data = Get<String>(
-    "https://raw.githubusercontent.com/liangjingkanji/BRV/master/README.md",
-    absolutePath = true
-  )
-
-  textView.text = data.await()
+    val data = Get<String>("error")
+    textView.text = data.await()
 }.catch { 
-	// 只有发生异常才会执行, it为异常对象
+    // 只有发生异常才会执行, it为异常对象
 }.finally { 
- // 无论是否正常结束还是异常都会执行,  it为异常对象, 如果非异常结束为NULL
+    // 无论是否正常结束还是异常都会执行,  it为异常对象, 如果非异常结束为NULL
 }
 ```
 
@@ -576,10 +530,10 @@ Convert 主要进行数据转换, 这里一般解析JSON对象.
 这就是实现`DefaultConvert`自己解析Json对象. DefaultConverter是框架中定义的一个默认处理JSON示例, 一般情况使用它解析下JSON即可. 
 
 ```kotlin
-initNet("http://localhost.com") {
+initNet("hhttp://182.92.97.186/") {
     converter(object : DefaultConverter() {
-        override fun <S> convert(succeed: Type, body: String): S? {
-            return Moshi.Builder().build().adapter<S>(succeed).fromJson(body)
+        override fun <S> String.parseBody(succeed: Type): S? {
+            return Moshi.Builder().build().adapter<S>(succeed).fromJson(this)
         }
     })
 }
@@ -588,11 +542,9 @@ initNet("http://localhost.com") {
 DefaultConvert构造函数拥有三个参数默认值
 
 ```kotlin
-abstract class DefaultConverter(
-    val success: String = "0",
-    val code: String = "code",
-    val msg: String = "msg"
-)
+abstract class DefaultConverter(val success: String = "0",
+                                val code: String = "code",
+                                val msg: String = "msg")
 ```
 
 因为内部需要得到错误码`code`来判断请求是否真正成功以及错误消息`msg`来在错误的时候进行打印吐司错误信息. 
@@ -605,19 +557,9 @@ abstract class DefaultConverter(
 
 ```kotlin
 /**
-     * 解析数据用于获取基本接口信息
-     */
-open fun String.parseBody(): String {
-  return this
-}
-
-/**
-     * 解析JSON数据
-     *
-     * @param succeed Type 请求函数传过来的字节码类型
-     * @return S? 解析后的数据实体
-     */
-abstract fun <S> String.parseJson(succeed: Type): S?
+* 解析数据用于获取基本接口信息
+*/
+abstract fun <S> String.parseBody(succeed: Type): S?
 ```
 
 
@@ -635,7 +577,7 @@ abstract fun <S> String.parseJson(succeed: Type): S?
 首先在初始化的时候启用缓存功能
 
 ```kotlin
-initNet("http://localhost.com") {
+initNet("http://182.92.97.186/") {
 	cacheEnabled()
 }
 ```
@@ -657,32 +599,15 @@ fun KalleConfig.Builder.cacheEnabled(
 
 ```kotlin
 scopeNetLife {
-
-  Log.d("日志", "网络请求")
-
-  val data = Get<String>(
-    "https://raw.githubusercontent.com/liangjingkanji/BRV/master/README.md",
-    cache = CacheMode.NETWORK_YES_THEN_WRITE_CACHE,
-    absolutePath = true
-  )
-
-  textView.text = data.await()
-
+    Log.d("日志", "网络请求")
+    textView.text = Get<String>("api", cache = CacheMode.NETWORK_YES_THEN_WRITE_CACHE).await()
 }.cache {
-
-  Log.d("日志", "读取缓存")
-
-  val data = Get<String>(
-    "https://raw.githubusercontent.com/liangjingkanji/BRV/master/README.md",
-    cache = CacheMode.READ_CACHE,
-    absolutePath = true
-  )
-
-  textView.text = data.await()
+    Log.d("日志", "读取缓存")
+    textView.text = Get<String>("api", cache = CacheMode.READ_CACHE).await()
 }
 ```
 
-上面示例代码这种属于: 先加载缓存(没有缓存不会报异常), 后网络请求(缓存和网络请求都失败报异常信息), 网络请求成功缓存到本地并刷新界面UI.
+上面示例代码这种属于: 先加载缓存(没有缓存不会报异常), 后网络请求(缓存和网络请求都失败报异常信息), 网络请求成功缓存到本地并刷新界面UI
 
 
 
@@ -695,11 +620,9 @@ scopeNetLife {
 
 
 ```kotlin
-fun cache(
-  error: Boolean = false, // 缓存读取成功但网络请求失败是否吐司错误信息
-  animate: Boolean = false, // 缓存读取成功是否立即停止加载动画, 只有PageRefreshLayout有效
-  onCache: suspend CoroutineScope.() -> Unit
-): AndroidScope 
+fun cache(error: Boolean = false, // 缓存读取成功但网络请求失败是否吐司错误信息
+          animate: Boolean = false, // 缓存读取成功是否立即停止加载动画, 只有PageRefreshLayout有效
+          onCache: suspend CoroutineScope.() -> Unit): AndroidScope 
 ```
 
 

+ 1 - 2
sample/src/main/java/com/drake/net/sample/ui/fragment/RequestMethodFragment.kt

@@ -34,8 +34,7 @@ class RequestMethodFragment : Fragment() {
 
     private fun GET() {
         scopeNetLife {
-            val data = Get<String>("api").await()
-            tv_fragment.text = data
+            tv_fragment.text = Get<String>("api").await()
         }
     }