Skip to content

Commit

Permalink
docs: 更新文档
Browse files Browse the repository at this point in the history
  • Loading branch information
liangjingkanji committed Aug 16, 2023
1 parent a78d461 commit d6d4647
Show file tree
Hide file tree
Showing 26 changed files with 71 additions and 74 deletions.
4 changes: 2 additions & 2 deletions docs/auto-dialog.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Net支持发起请求开始时显示加载框, 请求结束时隐藏加载框(
```kotlin hl_lines="1"
scopeDialog {
tvFragment.text = Post<String>("dialog") {
param("u_name", "drake") // 请求参数
param("username", "用户名") // 请求参数
param("pwd", "123456")
}.await()
}
Expand All @@ -28,7 +28,7 @@ val dialog = BubbleDialog(requireActivity(), "加载中")

scopeDialog(dialog) {
binding.tvFragment.text = Post<String>("dialog") {
param("u_name", "drake")
param("username", "用户名")
param("pwd", "123456")
}.await()
}
Expand Down
2 changes: 1 addition & 1 deletion docs/coroutine-request.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ val job = scopeNetLife {
repeat(10000) {
// 这里将返回的数据显示在TextView上
launch {
tvFragment.text = Get<String>("https://github.com/liangjingkanji/Net/").await()
tvFragment.text = Get<String>(Api.PATH).await()
}
}
}
Expand Down
4 changes: 3 additions & 1 deletion docs/debounce.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,6 @@ binding.etInput.debounce().distinctUntilChanged().launchIn(this) {
指定参数设置节流阀超时时间
```kotlin
fun EditText.debounce(timeoutMillis: Long = 800)
```
```
<br>
1. [示例-自动搜索分页列表](https://github.com/liangjingkanji/Net/blob/a78d46118666a3509d3fcc79c1d28ad81e2d5a57/sample/src/main/java/com/drake/net/sample/ui/fragment/EditDebounceFragment.kt)
2 changes: 1 addition & 1 deletion docs/download-file.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ scopeNetLife {
```kotlin
scopeNetLife {
val file =
Get<File>("https://download.sublimetext.com/Sublime%20Text%20Build%203211.dmg") {
Get<File>("https://github.com/liangjingkanji/Net/releases/latest/download/net-sample.apk") {
setDownloadFileName("net.apk")
setDownloadDir(requireContext().filesDir)
setDownloadMd5Verify()
Expand Down
6 changes: 3 additions & 3 deletions docs/https.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Https如果使用的CA证书, 不需要任何配置可以直接访问

```kotlin
scopeNetLife {
tvFragment.text = Get<String>("https://github.com/liangjingkanji/Net/").await()
tvFragment.text = Get<String>(Api.PATH).await()
}
```

Expand All @@ -25,7 +25,7 @@ scopeNetLife {

```kotlin
scopeNetLife {
Get<String>("https://github.com/liangjingkanji/Net/"){
Get<String>(Api.PATH){
setClient {
trustSSLCertificate()
}
Expand All @@ -50,7 +50,7 @@ scopeNetLife {

```kotlin
scopeNetLife {
Get<String>("https://github.com/liangjingkanji/Net/") {
Get<String>(Api.PATH) {
setClient {
val privateCertificate = resources.assets.open("https.certificate") // 这里的证书是放到应用的资产目录下
setSSLCertificate(privateCertificate)
Expand Down
37 changes: 17 additions & 20 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,49 +22,46 @@ Net是基于[OkHttp](https://github.com/square/okhttp)/协程的非侵入式框

=== "简单请求"
```kotlin
scopeNetLife { 创建作用域
// 这个大括号内就属于作用域内部
val data = Get<String>("https://github.com/liangjingkanji/Net/").await() // 发起GET请求并返回`String`类型数据
scopeNetLife {
// 大括号内属于作用域
val data = Get<String>(Api.USER).await() // 发起GET请求并返回`String`
}
```
=== "同步请求"
```kotlin
scopeNetLife {
val userInfo = Get<String>("https://github.com/liangjingkanji/BRV/").await() // 立即请求
val config = Get<String>("https://github.com/liangjingkanji/Net/"){
param("userId", userInfo.id) // 使用上个请求的数据作为参数
}.await() // 请求B 将等待A请求完毕后发起GET请求并返回数据
// B将等待A请求返回结果后发起请求
val userInfo = Get<UserInfo>(Api.USER).await() // A

val config = Get<Config>(Api.CONFIG){ // B
param("userId", userInfo.id) // 将上个请求结果作为参数
}.await()
}
```
=== "并发请求"
```kotlin
scopeNetLife {
// 以下两个网络请求属于同时进行中
val getUserInfoAsync = Get<String>("https://github.com/liangjingkanji/Net/") // 立即请求
val getConfigAsync = Get<String>("https://github.com/liangjingkanji/BRV/") // 立即请求
// 两个请求同时发起
val getUserInfoAsync = Get<UserInfo>(Api.USER)
val getConfigAsync = Get<Config>(Api.CONFIG)

val userInfo = getUserInfoAsync.await() // 等待数据返回
val config = getConfigAsync.await()
}
```

多个网络请求在同一个作用域内可以统一管理

如果多个网络请求之间毫无关联, 可以创建多个作用域来请求
1. 多个网络请求在同一个作用域内可以统一管理
2. 如果多个网络请求之间毫无关联, 可以创建多个作用域来请求

!!! failure "强制初始化"
多进程或Xposed项目要求先[初始化](config.md#_1)

并发请求错误示例
自动识别`Url`或者`Path`请求

```kotlin hl_lines="3"
scopeNetLife {
// 请求A
val userInfo = Get<String>("https://github.com/liangjingkanji/Net/").await()
// 由于上面使用`await()`函数, 所以必须等待A请求返回结果后才会执行B
val getConfigAsync = Post<String>("https://github.com/liangjingkanji/Net/")

val config = getConfigAsync.await() // 等待任务B返回数据
val userInfo = Get<String>("/net").await()
val config = Get<String>("https://github.com/liangjingkanji/net").await()
}
```

Expand Down
2 changes: 1 addition & 1 deletion docs/log-notice.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ implementation "com.github.chuckerteam.chucker:library:3.5.2"
添加拦截器

```kotlin
NetConfig.initialize("https://github.com/liangjingkanji/", this) {
NetConfig.initialize(Api.HOST, this) {
// ...
if (BuildConfig.DEBUG) {
addInterceptor(
Expand Down
4 changes: 2 additions & 2 deletions docs/progress.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Net支持上传/下载的进度监听, 且具备完善的进度信息

```kotlin
scopeNetLife {
Post<String>("https://download.sublimetext.com/Sublime%20Text%20Build%203211.dmg") {
Post<String>(Api.UPLOAD) {
param("file", assetsFile())
addUploadListener(object : ProgressListener() {
override fun onProgress(p: Progress) {
Expand All @@ -29,7 +29,7 @@ scopeNetLife {
```kotlin
scopeNetLife {
val file =
Get<File>("https://download.sublimetext.com/Sublime%20Text%20Build%203211.dmg") {
Get<File>("https://github.com/liangjingkanji/Net/releases/latest/download/net-sample.apk") {
setDownloadFileName("net.apk")
setDownloadDir(requireContext().filesDir)

Expand Down
2 changes: 1 addition & 1 deletion docs/request.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
```kotlin
scopeNetLife {
val userInfo = Post<UserInfoModel>(Api.LOGIN) {
param("username", "drake")
param("username", "用户名")
param("password", "6f2961eb44b12123393fff7e449e50b9de2499c6")
}.await()
}
Expand Down
24 changes: 11 additions & 13 deletions docs/timing.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
scopeDialog {
// 当接口请求在100毫秒内没有完成会抛出异常TimeoutCancellationException
withTimeout(100) {
Get<String>(Api.BANNER).await()
Get<String>(Api.PATH).await()
}
}.catch {
Log.e("日志", "catch", it) // catch无法接收到CancellationException异常
Log.e("日志", "请求错误", it) // catch无法接收到CancellationException异常
}.finally {
Log.e("日志", "finally", it) // TimeoutCancellationException属于CancellationException子类故只会被finally接收到
Log.e("日志", "请求完成", it) // TimeoutCancellationException属于CancellationException子类故只会被finally接收到
if (it is TimeoutCancellationException) {
toast("由于未在指定时间完成请求则取消请求")
}
Expand All @@ -30,11 +30,10 @@ scopeNetLife {
// 每两秒请求一次, 总共执行10次
repeat(20) {
delay(1000)
val data =
Get<String>("http://api.k780.com/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json").await()
binding.tvContent.text =
JSONObject(data).getJSONObject("result").getString("datetime_2")
// 通过return@repeat可以终止循环
val data = Get<String>(Api.PATH).await()
if(it = 10) {
return@repeat
}
}
}
```
Expand All @@ -45,11 +44,10 @@ scopeNetLife {
scopeNetLife {
while (true) {
delay(1.toDuration(DurationUnit.SECONDS))
val data =
Get<String>("http://api.k780.com/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json").await()
binding.tvContent.text =
JSONObject(data).getJSONObject("result").getString("datetime_2")
// 通过break可以终止循环
val data = Get<CONFIG>(Api.PATH).await()
if(data.type = 3) {
break
}
}
}
```
2 changes: 1 addition & 1 deletion docs/track.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Net中网络请求异常会LogCat输出, 除非开发者修改全局错误处理
演示访问一个不存在的请求路径
```kotlin
scopeNetLife {
tvFragment.text = Get<String>("https://githuberror.com/liangjingkanji/Net/").await()
tvFragment.text = Get<String>("https://error.com/Net/").await()
}
```

Expand Down
4 changes: 2 additions & 2 deletions sample/src/main/java/com/drake/net/sample/base/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,11 @@ class App : Application() {

MockDispatcher.initialize()

initializeThirdPart()
initializeView()
}

/** 初始化第三方依赖库库 */
private fun initializeThirdPart() {
private fun initializeView() {

// 全局缺省页配置 [https://github.com/liangjingkanji/StateLayout]
StateConfig.apply {
Expand Down
2 changes: 1 addition & 1 deletion sample/src/main/java/com/drake/net/sample/constants/Api.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ package com.drake.net.sample.constants
object Api {
const val HOST = "http://127.0.0.1:8091"

const val TEST = "/test"
const val TEXT = "/text"
const val DELAY = "/delay"
const val UPLOAD = "/upload"
const val GAME = "/game"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class MockDispatcher : Dispatcher() {

override fun dispatch(request: RecordedRequest): MockResponse {
return when (request.requestUrl?.encodedPath ?: "") {
Api.TEST -> getString("Request Success : ${request.method}")
Api.TEXT -> getString("Request Success : ${request.method}")
Api.DELAY -> getString("Request Success : ${request.method}").setBodyDelay(2, TimeUnit.SECONDS)
Api.UPLOAD -> uploadFile(request)
Api.GAME -> getRawResponse(R.raw.game)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class CallbackRequestFragment :

override fun initView() {
// Net同样支持OkHttp原始的队列任务
Net.post(Api.TEST).enqueue(object : Callback {
Net.post(Api.TEXT).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class FastestFragment : EngineFragment<FragmentFastestBinding>(R.layout.fragment
*/

// 同时发起四个网络请求
val deferred2 = Get<String>(Api.TEST) { setGroup("最快") }
val deferred2 = Get<String>(Api.TEXT) { setGroup("最快") }
val deferred3 = Post<String>("navi/json") { setGroup("最快") }
val deferred = Get<String>("api0") { setGroup("最快") } // 错误接口
val deferred1 = Get<String>("api1") { setGroup("最快") } // 错误接口
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class InterceptorFragment :

override fun initView() {
scopeNetLife {
binding.tvFragment.text = Get<String>(Api.TEST) {
binding.tvFragment.text = Get<String>(Api.TEXT) {
// 拦截器只支持全局, 无法单例, 请查看[com.drake.net.sample.interceptor.NetInterceptor]
}.await()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class LimitedTimeFragment : EngineFragment<FragmentLimitedTimeBinding>(R.layout.
scopeDialog {
// 当接口请求在100毫秒内没有完成会抛出异常TimeoutCancellationException
withTimeout(100) {
Get<String>(Api.TEST).await()
Get<String>(Api.TEXT).await()
}
}.catch {
Log.e("日志", "catch", it) // catch无法接收到CancellationException异常
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ class ParallelNetworkFragment :
scopeNetLife {

// 同时发起三个请求
val deferred = Get<String>(Api.TEST)
val deferred1 = Post<String>(Api.TEST)
val deferred2 = Trace<String>(Api.TEST)
val deferred = Get<String>(Api.TEXT)
val deferred1 = Post<String>(Api.TEXT)
val deferred2 = Trace<String>(Api.TEXT)

// 同时接收三个请求数据
deferred.await()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ class PreviewCacheFragment : EngineFragment<FragmentReadCacheBinding>(R.layout.f

scopeNetLife {
// 然后执行这里(网络请求)
binding.tvFragment.text = Get<String>(Api.TEST) {
binding.tvFragment.text = Get<String>(Api.TEXT) {
setCacheMode(CacheMode.WRITE)
}.await()
Log.d("日志", "网络请求")
}.preview(true) {
// 先执行这里(仅读缓存), 任何异常都视为读取缓存失败
binding.tvFragment.text = Get<String>(Api.TEST) {
binding.tvFragment.text = Get<String>(Api.TEXT) {
setCacheMode(CacheMode.READ)
}.await()
Log.d("日志", "读取缓存")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class ReadCacheFragment : EngineFragment<FragmentReadCacheBinding>(R.layout.frag
override fun initView() {
scopeNetLife {
binding.tvFragment.text =
Post<String>(Api.TEST) {
Post<String>(Api.TEXT) {
setCacheMode(CacheMode.REQUEST_THEN_READ) // 请求网络失败会读取缓存, 请断网测试
// setCacheKey("自定义缓存KEY")
}.await()
Expand Down
Loading

0 comments on commit d6d4647

Please sign in to comment.