javaweb--Rest访问(RestTemplate)

Rest访问(RestTemplate)

在实际的项目中,往往需要发送一个Get/Post请求到其他的系统(Rest API),比如向人员管理部门请求,然后解析返回信息获取该用户的基本信息等。JDK传统的HttpURLConnection、Apache HttpClient、Netty 4和OkHttp等可以实现访问请求。不过spring的RestTemplate封装了这些操作库,使之更容易使用。

一. Rest的具体使用

1.1 get方式

RestTemplate get方式中有两个方法: getForObject和getForEntity
getForObject可以指定返回类型,getForEntity同一返回ResponseEntity

1.1.1 getForObject

有三种重载方式
(1) T getForObject(URI url, Class responseType)
(2) T getForObject(String url, Class responseType, MapString< String, ?> urlVariables)
(3) T getForObject(String url, Class responseType, Object… urlVariables)
其中url为请求url,可用通配符表示请求参数,responseType为请求返回的对象类,自动封装成对象该对象形式(如String.class 或User.class), Map< String, ?> urlVariables表示请求参数,与通配符对应即可, Object… urlVariables为请求的参数数组形式,按顺序一一匹配url中内.

下面举一个例子:
定义一个返回类型:User

public class User
{ 
    private String name; 
    private Integer age;
}

省略getset方法

发送方

private RestTemplate restTemplate = new RestTemplate();
private String name = "xiaoming"; 
private Integer age = 18;

#重载方式3
String url = "http://localhost:8080/getUser?name={name}&age={age}";
Object[] arr = new Object[]{name, age};
User u = restTemplate.getForObject(url, User.class, arr);

#重载方式2
String url = "http://localhost:8080/getUser?name={name}&age={age}"; 
Map<String, Object> map = new HashMap<>(); 
map.put("name", name); 
map.put("age", age);
User u = restTemplate.getForObject(url, User.class, map);

#重载方式1
#没有参数的get方式直接调用重载方式1。如
String url = "http://localhost:8080/findAllUser";
User u = restTemplate.getForObject(url, User.class);

#实际生产中常用的是
String url = "http://localhost:8080/getUser?name=${name}&age=${age}"; 
url.replace("${name}", name)
   .replace("${age}", age);
User u = restTemplate.getForObject(url, User.class);

接受方controller

public  User getUser(@RequestParam String name, @RequestParam Integer age)
1.1.2 getForEntity

getForEntity与getForObject请求参数基本一样,只是返回内容不一样 .getForEntity返回ResponseEntity,里面包含返回消息内容和http headers,http 状态码。
在实际的生产环境中get请求几乎全部getForEntity,因为需要判断状态码判断接口是否调用成功(status == 10000)。返回类型往往是Json格式的字符串,然后通过转换为Json获取对应的信息。

发送方

String url = "http://localhost:8080/getUser?name={name}&age={age}"; 
Map<String, Object> map = new HashMap<>(); 
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值