在遺留工程中使用Resty簡化REST調(diào)用

簡介

Spring3.0以下的遺留工程,由于無法使用RestTemplate,所以調(diào)用REST接口時(shí)會(huì)比較繁瑣。
通過使用第三方REST戶端框架Resty,可以大幅簡化調(diào)用過程。
Resty的優(yōu)勢是使用簡單,不需要引入過多的依賴。但相比于resttemplate/jersey/resteasy等,Resty還是過于小眾,而且已有2年時(shí)間沒有維護(hù),異常處理也不是很完善。所以只建議在老舊項(xiàng)目中使用。
本文演示了Resty各種用法,包括代理設(shè)置、Header設(shè)置等。

添加依賴

對(duì)于較老的項(xiàng)目,直接下載并添加resty-0.3.2.jar

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

如果項(xiàng)目使用了maven或gradle,直接添加依賴即可

<dependency>
  <groupId>us.monoid.web</groupId>
  <artifactId>resty</artifactId>
  <version>0.3.2</version>
</dependency>
compile 'us.monoid.web:resty:0.3.2'

示例

初始化

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

設(shè)置代理

resty.setProxy("127.0.0.1", 8888);

設(shè)置token

resty.setOptions(new Resty.Option() {
    @Override
    public void apply(URLConnection aConnection) {
        aConnection.setRequestProperty("Authorization", "Bearer foobarboobarfoobar");
        super.apply(aConnection);
    }
});

GET 查詢

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

PUT 修改

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

POST 新增

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

DELETE 刪除

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

綜合示例

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");

    // 查詢資費(fèi)信息,通過userId取到所有資費(fèi)
    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);
        // 隨機(jī)取一個(gè)itemId
        itemId = jsonObject.getString("itemId");
    }

    // 更改資費(fèi)信息,通過itemId修改資費(fèi)信息
    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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容