restTemplate 使用指南(一)

rest-template-POST使用

POST请求:

  • 使用方法:postForEntity(String url, @Nullable Object request, Class
    responseType, Object… uriVariables)
  • 参数使用body体传输:HttpEntity

代码示例如下:

StringBuilder stringBuilder = new StringBuilder(URL).append("/post/testForJson");
String postUrl = stringBuilder.toString();
HashMap params = new HashMap(2);
params.put("name", "gjx");
params.put("age", 10);
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(params);
ResponseEntity<String> result = restTemplate.postForEntity(postUrl, httpEntity, String.class);
log.info("post test json result:{}", result.getBody());

request 请求信息:在这里插入图片描述

url地址后追加url参数代码示例:

StringBuilder stringBuilder = new StringBuilder(URL).append("/post/testForJsonWithUrlParam?urlParam={urlParam}");
String postUrl = stringBuilder.toString();
HashMap params = new HashMap(2);
params.put("name", "gjx");
params.put("age", 10);
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(params);
ResponseEntity<String> result = restTemplate.postForEntity(postUrl, httpEntity, String.class,"urlParam");
log.info("post test json result:{}", result.getBody());

输出:
在这里插入图片描述

post、put系列。Object request 进行body体数据传输,以及请求头设置等。Map<String, ?> uriVariables 或者 Object... uriVariables 进行url参数拼接赋值。url格式为?k={kname}&...

restTemplate–GET使用

Get请求:

  • 使用方法:getForEntity(String var1, Class var2, Object… var3)
  • 参数拼接形式:url+?k={k}&v={v}

代码示例:

String k = "this is a get test?";
String v = "yes";
// 第一种 getForEntity(String var1, Class<T> var2, Object... var3)
StringBuilder stringBuilder = new StringBuilder(URL).append("/get/testUrlencoded")
        .append("?k={k}&v={v}");
String testUrl = stringBuilder.toString();
ResponseEntity<String> result = restTemplate.getForEntity(testUrl, String.class, k, v);
log.info("first -result:{}", result.getBody());

request请求详情:
在这里插入图片描述

  • 使用方法:getForEntity(String url, Class responseType, Map<String, ?>
    uriVariables)参
  • 数拼接形式:url+?k={k}&v={v}
    代码示例:
log.info("test get second====================================================");
HashMap params = new HashMap(2);
params.put("k", "this is second test?");
params.put("v", "yes");
ResponseEntity<String> result2 = restTemplate.getForEntity(testUrl, String.class, params);
log.info("second -result:{}", result2.getBody());

request请求详情:
在这里插入图片描述

  • 使用方法:getForEntity(URI url, Class responseType)
  • 参数拼接形式:url+?k={k}&v={v}

代码示例:

log.info("test get third====================================================");
HashMap params2 = new HashMap(2);
params2.put("k", "this is third test?");
params2.put("v", "yes");
UriComponents uriComponents = UriComponentsBuilder.fromUriString(testUrl).build().expand(params2);
URI uri = uriComponents.encode().toUri();
ResponseEntity<String> result3 = restTemplate.getForEntity(uri, String.class);
log.info("third -result:{}", result3.getBody());

request请求详情:
在这里插入图片描述

以上是使用restTemplate进行http请求时,对post与get的使用示例,其他的请求方式,使用方式类似。
restTemplate提供两种传输数据的方式:1、body,2、url拼接
body数据需要放置在方法的 Object request中。可以定义HttpEntity进行参数封装。

本文中所涉及的完整代码可从github上下载:https://github.com/guojixiang/rest-template

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值