简介
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 { restUrl = baseUrl + "/users?serialNumber=" + serialNumber; jsonObject = resty.json(restUrl).object(); System.out.println(jsonObject); String userId = jsonObject.getString("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 = jsonObject.getString("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