美文网首页server
在遗留工程中使用Resty简化REST调用

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

作者: bluexiii | 来源:发表于2017-06-08 15:41 被阅读15次

简介

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

添加依赖

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

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

如果项目使用了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();

设置代理

resty.setProxy("127.0.0.1", 8888);

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

    // 查询资费信息,通过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

相关文章

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

    简介 Spring3.0以下的遗留工程,由于无法使用RestTemplate,所以调用REST接口时会比较繁琐。通...

  • RestTemplate使用教程

    一、概述 spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的...

  • Java中的HTTP客户端工具——RestTemplate

    RestTemplate是由Spring框架提供的一个可用于应用中调用rest服务的类它简化了与http服务的通信...

  • URL Query Build 释疑

    使用腾讯云平台 IM 服务,调用 REST API,其中要组装 URL 中的 Query,今天竟大费周折; 使用 ...

  • 工作流调用rest服务

    1)通过配置应用程序调用rest服务 年编写java类型的应用程序,在java程序中调用rest服务 (2)以we...

  • Feign-声明式REST调用

    简介 本文主要介绍如何使用spring-cloud-feign,在项目中使用Feign进行REST调用。 通常我们...

  • Flutter--调用原生功能

    Flutter工程调用原生功能--相册相机 demo 1 使用methodChannel Flutter工程中创建...

  • 2018-04-25

    一、使用热部署在pom文件中添加 二、添加REST支持  多个系统之间的调用方式可选用RESTFul方式。三、Ma...

  • CC 原理简单分析

    一、CC 的基本使用方式 1、在模块A中定义Component 2、在主工程中调用A模块中的Component 二...

  • elsticsearch REST API

    什么是REST? REST是一种思想和理念! 推崇使用标准的url路径,表达对资源的操作方式!本质是为了简化和规范...

网友评论

    本文标题:在遗留工程中使用Resty简化REST调用

    本文链接:https://www.haomeiwen.com/subject/uehtqxtx.html