Skip to content

Commit

Permalink
优化代码规范和注释
Browse files Browse the repository at this point in the history
修正参数深嵌套解析的逻辑
  • Loading branch information
getActivity committed Jun 28, 2020
1 parent e1d9a22 commit 5c57fbd
Show file tree
Hide file tree
Showing 13 changed files with 505 additions and 108 deletions.
Binary file modified EasyHttp.apk
Binary file not shown.
262 changes: 262 additions & 0 deletions HelpDoc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,262 @@
#### 如何添加全局参数?

```
// 添加全局请求参数
EasyConfig.getInstance().addHeader("token", "abc");
// 添加全局请求头
EasyConfig.getInstance().addParam("token", "abc");
```

#### 如何在请求中忽略某个全局参数?

```
public final class XxxApi implements IRequestApi {
@Override
public String getApi() {
return "xxx/xxxx";
}
@HttpIgnore
private String token;
}
```

#### 如何获取服务器配置?

```
IRequestServer server = EasyConfig.getInstance().getServer();
// 获取当前全局的服务器主机地址
String host = server.getHost();
// 获取当前全局的服务器路径地址
String path = server.getPath();
```

#### 如何修改服务器配置?

* 先定义一个服务器配置

```
public class XxxServer implements IRequestServer {
@Override
public String getHost() {
return "https://www.xxxxxxx.com/";
}
@Override
public String getPath() {
return "api/";
}
}
```

* 再将它应用到全局配置中

```
EasyConfig.getInstance().setServer(new XxxServer());
```

* 如果只是针对某个接口可以这样配置

```
public final class XxxApi extends XxxServer implements IRequestApi {
@Override
public String getApi() {
return "xxx/xxxx";
}
}
```

* 如果不想单独定义一个类,也可以这样写

```
public final class XxxApi implements IRequestServer, IRequestApi {
@Override
public String getHost() {
return "https://www.xxxxxxx.com/";
}
@Override
public String getPath() {
return "api/";
}
@Override
public String getApi() {
return "xxx/xxxx";
}
}
```

#### 如何修改参数的提交方式?

* 以表单的形式提交参数(默认)

```
public class XxxServer implements IRequestServer {
@Override
public String getHost() {
return "https://www.xxxxxxx.com/";
}
@Override
public String getPath() {
return "api/";
}
@Override
public BodyType getType() {
return BodyType.FORM;
}
}
```

* 以 Json 的形式提交参数

```
public class XxxServer implements IRequestServer {
@Override
public String getHost() {
return "https://www.xxxxxxx.com/";
}
@Override
public String getPath() {
return "api/";
}
@Override
public BodyType getType() {
return BodyType.JSON;
}
}
```

* 当然也支持对某个接口进行单独配置,和上面的雷同,这里略过

* 表单和 Json 方式提交的优缺点对比

| 场景 | 表单方式 | Json 方式 |
| :----: | :------: | :-----: |
| 参数嵌套 | 不支持 | 支持 |
| 文件上传 | 支持 | 不支持 |

#### 如何忽略某个参数?

```
public final class XxxApi implements IRequestApi {
@Override
public String getApi() {
return "xxx/xxxx";
}
@HttpIgnore
private String address;
}
```

#### 如何传入请求头?

```
public final class XxxApi implements IRequestApi {
@Override
public String getApi() {
return "xxx/xxxx";
}
@HttpHeader
private String time;
}
```

#### 如何重命名参数名称?

```
public final class XxxApi implements IRequestApi {
@Override
public String getApi() {
return "xxx/xxxx";
}
@HttpRename("k")
private String keyword;
}
```

#### 如何上传文件?

* 使用 File 对象上传

```
public final class XxxApi implements IRequestApi {
@Override
public String getApi() {
return "xxx/xxxx";
}
private File file;
}
```

* 使用 InputStream 对象上传

```
public final class XxxApi implements IRequestApi {
@Override
public String getApi() {
return "xxx/xxxx";
}
private InputStream inputStream;
}
```

* 使用 RequestBody 对象上传

```
public final class XxxApi implements IRequestApi {
@Override
public String getApi() {
return "xxx/xxxx";
}
private RequestBody requestBody;
}
```

#### 如何上传文件列表?

```
public final class XxxApi implements IRequestApi {
@Override
public String getApi() {
return "xxx/xxxx";
}
private List<File> files;
}
```

#### 如何设置超时重试?

```
EasyConfig.getInstance().setRetryCount(3);
```

#### 如何设置不打印日志?

```
EasyConfig.getInstance().setLogEnabled(false);
```
23 changes: 19 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
}

dependencies {
implementation 'com.hjq:http:6.8'
implementation 'com.hjq:http:6.9'
implementation 'com.squareup.okhttp3:okhttp:3.12.10'
implementation 'com.google.code.gson:gson:2.8.5'
}
Expand Down Expand Up @@ -79,7 +79,6 @@

#### 配置接口

@Keep
public final class LoginApi implements IRequestApi {

@Override
Expand Down Expand Up @@ -112,13 +111,14 @@

* @HttpRename:重新定义这个字段发送给后台的参数名称

* 可为这个类多实现一些配置接口
* 可在这个类实现一些接口

* implements IRequestHost:实现这个接口之后可以重新指定这个请求的主机地址

* implements IRequestPath:实现这个接口之后可以重新指定这个请求的接口路径

* implements IRequestType:实现这个接口之后可以重新指定这个请求的提交方式
* implements IRequestType:实现这个接口之后可以重新指定这个请求的提交方式


#### 发起请求

Expand Down Expand Up @@ -208,6 +208,21 @@
-keepclassmembernames class com.hjq.http.demo.http.** {
<fields>;
}

#### 对比 Retrofit

| 功能 | Retrofit 框架 | EasyHttp 框架 |
| :----: | :------: | :-----: |
| 动态 URL | 不支持 | 支持 |
| 全局参数 | 不支持 | 支持 |
| 超时重试 | 不支持 | 支持 |
| 极速下载 | 不支持 | 支持 |
| 下载校验 | 不支持 | 支持 |
| 注解数量 | 25 个 | 3 个 |
| 上传文件 | RequestBody | File / InputStream |
| 请求管理 | 需要封装 | 自动管控 |

#### 具体用法可以[点击这里查看](HelpDoc.md)

#### 作者的其他开源项目

Expand Down
8 changes: 4 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ android {
applicationId "com.hjq.http.demo"
minSdkVersion 14
targetSdkVersion 28
versionCode 68
versionName "6.8"
versionCode 69
versionName "6.9"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
debug {
minifyEnabled true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
Expand All @@ -45,7 +45,7 @@ dependencies {
// 标题栏:https://github.com/getActivity/TitleBar
implementation 'com.hjq:titlebar:6.5'
// 吐司工具类:https://github.com/getActivity/ToastUtils
implementation 'com.hjq:toast:8.2'
implementation 'com.hjq:toast:8.3'
// 权限请求框架:https://github.com/getActivity/XXPermissions
implementation 'com.hjq:xxpermissions:6.5'
// Json 解析框架:https://github.com/google/gson
Expand Down
7 changes: 4 additions & 3 deletions app/src/main/java/com/hjq/http/demo/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import androidx.core.content.FileProvider;

import com.hjq.http.EasyHttp;
import com.hjq.http.EasyLog;
import com.hjq.http.demo.http.model.HttpData;
import com.hjq.http.demo.http.request.SearchAuthorApi;
import com.hjq.http.demo.http.request.SearchBlogsApi;
Expand Down Expand Up @@ -108,7 +109,7 @@ public void onClick(View v) {

@Override
public void onSucceed(HttpData<SearchBean> result) {
ToastUtils.show("请求成功");
ToastUtils.show("请求成功,请看日志");
}
});
break;
Expand All @@ -120,7 +121,7 @@ public void onSucceed(HttpData<SearchBean> result) {

@Override
public void onSucceed(HttpData<SearchBean> result) {
ToastUtils.show("请求成功");
ToastUtils.show("请求成功,请看日志");
}
});
break;
Expand Down Expand Up @@ -239,7 +240,7 @@ private void drawableToFile(Drawable drawable, File file) {
((BitmapDrawable) drawable).getBitmap().compress(Bitmap.CompressFormat.PNG, 100, out);
out.close();
} catch (IOException e) {
e.printStackTrace();
EasyLog.print(e);
}
}
}
Loading

0 comments on commit 5c57fbd

Please sign in to comment.