BlueXIII's Blog

热爱技术,持续学习

0%

在遗留工程中使用Resty简化REST调用

简介

Spring3.0以下的遗留工程,由于无法使用RestTemplate,所以调用REST接口时会比较繁琐。
通过使用第三方REST户端框架Resty,可以大幅简化调用过程。
Resty的优势是使用简单,不需要引入过多的依赖。但相比于resttemplate/jersey/resteasy等,Resty还是过于小众,而且已有2年时间没有维护,异常处理也不是很完善。所以只建议在老旧项目中使用。
本文演示了Resty各种用法,包括代理设置、Header设置等。

添加依赖

对于较老的项目,直接下载并添加resty-0.3.2.jar

1
wget http://repo1.maven.org/maven2/us/monoid/web/resty/0.3.2/resty-0.3.2.jar

如果项目使用了maven或gradle,直接添加依赖即可

1
2
3
4
5
<dependency>
<groupId>us.monoid.web</groupId>
<artifactId>resty</artifactId>
<version>0.3.2</version>
</dependency>
1
compile 'us.monoid.web:resty:0.3.2'

示例

初始化

1
2
String baseUrl = "http://127.0.0.1:8080/foobar";
Resty resty = new Resty();

设置代理

1
resty.setProxy("127.0.0.1", 8888);

设置token

1
2
3
4
5
6
7
8
resty.setOptions(new Resty.Option() {
@Override
public void apply(URLConnection aConnection) {
aConnection.setRequestProperty("Authorization", "Bearer foobarboobarfoobar");
super.apply(aConnection);
}
});

GET 查询

1
2
3
String restUrl = baseUrl + "/users/4038488549360733";
JSONObject jsonObject = resty.json(restUrl).object();
String serialNumber = jsonObject.getString("serialNumber");

PUT 修改

1
2
3
String restUrl = baseUrl + "/users/4038488549360733";
String jsonStr = "{\"brandCode\":\"3G02\"}";
resty.json(restUrl, Resty.put(new Content("application/json", jsonStr.getBytes())));

POST 新增

1
2
3
4
String restUrl = baseUrl + "/users";
String jsonStr = "{\"brandCode\":\"3G03\"}";
resty.json(restUrl, new Content("application/json", jsonStr.getBytes()));

DELETE 删除

1
2
String restUrl = baseUrl + "/users/4038488549360733";
resty.json(restUrl, Resty.delete());

综合示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
String serialNumber = "12345678";
String restUrl;
JSONObject jsonObject;
JSONArray jsonArray;
String itemId = "";

try {
// 查询用户信息,通过serialNumber取到userId
restUrl = baseUrl + "/users?serialNumber=" + serialNumber;
jsonObject = resty.json(restUrl).object();
System.out.println(jsonObject);
String userId = jsonObject.getString("userId");

// 查询资费信息,通过userId取到所有资费
restUrl = baseUrl + "/discnts?userId=" + userId;
jsonArray = resty.json(restUrl).array();
for (int i = 0; i < jsonArray.length(); i++) {
jsonObject = jsonArray.getJSONObject(i);
System.out.println(jsonObject);
// 随机取一个itemId
itemId = jsonObject.getString("itemId");
}

// 更改资费信息,通过itemId修改资费信息
restUrl = baseUrl + "/discnts/" + itemId;
String jsonStr = "{\"startDate\":\"2001-01-01 20:01:02\", \"endDate\":\"2018-05-08 20:01:02\"}";
resty.json(restUrl, Resty.put(new Content("application/json", jsonStr.getBytes())));
} catch (Exception e) {
e.printStackTrace();
}

GitHub

https://github.com/beders/Resty