RestTemplate 用法

rest接口调用示例

restTemplate配置
首先本次示例采用的是springboot2.x以上版本,javaSE8;其次发布的服务端是同一台机子,服务端端口8090,客户端端口8080;类路径youku1327;在实际工作中最常用是get,post请求方式;restTemplate简单配置如下:

/**
 * @Author lsc
 * @Description <p> </p>
 * @Date 2019/10/14 11:40
 * @Version 1.0
 */
@Configuration
public class RestTemplateConfig {

  // 配置 RestTemplate
  @Bean
  public RestTemplate restTemplate(ClientHttpRequestFactory factory){
    return new RestTemplate(factory);
  }

  @Bean
  public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
    // 创建一个 httpCilent 简单工厂
    SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
    // 设置连接超时
    factory.setConnectTimeout(15000);
    // 设置读取超时
    factory.setReadTimeout(5000);
    return factory;
  }
}

get请求接口调用示例
服务费发布的端口

  @GetMapping("user")
  public String getUser(){
    return "youku1327";
  }

  @GetMapping("user/{name}")
  public String getUserName(@PathVariable String name){
    return name;
  }

客户端调用
GET参数说明:
第一个参数是url。
第二个参数是返回值类型。
第三个参数是uri地址路径变量

 /*
   * @Author lsc
   * @Description <p> 获得无参的get请求 </p>
   * @Date 2019/10/17 21:15
   * @Param []
   * @return void
   **/
  @Test
  public void testGETNoParams(){
    String result = restTemplate.getForObject("http://localhost:8090/youku1327/user", String.class);
    System.out.println(result);
  }
  /*
   * @Author lsc
   * @Description <p> URL带参 </p>
   * @Date 2019/10/18 13:49
   * @Param []
   * @return void
   **/
  @Test
  public void testGETParams(){
    // http://localhost:8090/youku1327/user/{1}
    String result = restTemplate.getForObject("http://localhost:8090/youku1327/user/{name}", String.class,"lsc");
    System.out.println(result);
  }

2 post请求示例
POST请求参数说明
第一个参数是url。第二个参数是请求参数。第三个参数是返回值类型。第三个参数是uri地址路径变量。

服务端发布接口

 @PostMapping("provider")
  public ResponseEntity<String> addData(@RequestBody JSONObject jsonObject){
    String user = (String) jsonObject.get("user");
    return ResponseEntity.ok(user);
  }

客户端接口调用

 /*
   * @Author lsc
   * @Description <p> post</p>
   * @Date 2019/10/18 23:23
   * @Param []
   * @return void
   **/
  @Test
  public void testPostMethod() throws MalformedURLException {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("user","youku1327");
    HttpHeaders httpHeaders = new HttpHeaders();
    // 设置请求类型
    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
    // 封装参数和头信息
    HttpEntity<JSONObject> httpEntity = new HttpEntity(jsonObject,httpHeaders);
    String url = "http://localhost:8090/youku1327/provider";
    ResponseEntity<String> mapResponseEntity = restTemplate.postForEntity(url, httpEntity, String.class);
    System.out.println(mapResponseEntity.getBody());
  }

3 put接口调用示例
PUT请求参数说明
第一个参数是url。第二个参数是请求参数。第三个参数是uri地址路径变量。
服务端发布接口

 @PutMapping("provider/{id}")
  public ResponseEntity<JSONObject> updateData(@PathVariable Long id, @RequestBody JSONObject jsonObject){
    Object object = jsonObject.get("user");
    jsonObject.put("id",id);
    // {"id":1327,"user":"youku1327"}
    System.out.println(jsonObject);
    return ResponseEntity.ok(jsonObject);
  }

客户端接口调用

  /*
   * @Author lsc
   * @Description <p> put</p>
   * @Date 2019/10/18 23:23
   * @Param
   * @return
   **/

  @Test
  public void testPutMethod() throws MalformedURLException {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("user","youku1327");
    HttpHeaders httpHeaders = new HttpHeaders();
    // 设置请求类型
    httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
    // 封装参数和头信息
    HttpEntity<JSONObject> httpEntity = new HttpEntity(jsonObject,httpHeaders);
    String url = "http://localhost:8090/youku1327/provider/{id}";
    restTemplate.put(url, httpEntity, 1327);
  }

4delete请求示例
DELETE请求参数说明
第一个参数是url第二个参数uri地址路径变量。
服务端发布接口

  @DeleteMapping("provider/{id}")
  public ResponseEntity<String> delData(@PathVariable Long id){
    String result = "delete"+id+"success";
    // delete1327success
    System.out.println(result);
    return ResponseEntity.ok(result);
  }

客户端调用接口

 /*
   * @Author lsc
   * @Description <p> delete</p>
   * @Date 2019/10/18 23:22
   * @Param []
   * @return void
   **/
  @Test
  public void testDelete(){
    String url = "http://localhost:8090/youku1327/provider/{id}";
    restTemplate.delete(url,1327);
  }

5 exchange
参数说明:
第一个参数是url。第二个参数是请求方式。第三个参数是请求实体。第四个参数是返回值类型。第五个参数是uri地址变量。
服务端发布接口

  @GetMapping("user/{name}")
  public String getUserName(@PathVariable String name){
    return name;
  }

客户端调用接口

  /*
   * @Author lsc
   * @Description <p> exchange</p>
   * @Date 2019/10/18 23:22
   * @Param []
   * @return void
   **/
  @Test
  public void testExchange(){
    String url = "http://localhost:8090/youku1327/user/{name}";
    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
    HttpEntity httpEntity = new HttpEntity(httpHeaders);
    ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class, "youku1327");
    System.out.println(exchange.getBody());
  }

RestTemplate 携带身份认证,参数,访问接口

   public void testPost(String token) {
        RestTemplate restTemplate = new RestTemplate();
        String url ="http://"+ip+"/path";
        HttpHeaders headers = new HttpHeaders();
        headers.add("Authorization", "Bearer "+token);
        MultiValueMap<String, Integer> paramMap = new LinkedMultiValueMap<>();
        paramMap.add("user_id",286);
        HttpEntity<MultiValueMap<String, Integer>> formEntity = new HttpEntity<>(paramMap, headers);
        //接收json字符串
        ResponseEntity<JSONObject> post = restTemplate.postForEntity(url, formEntity, JSONObject.class);
        JSONObject contractId = post.getBody();
        System.out.println(contractId);
    }

RestTemplate 传 json数据

   @Test
    public void testForest() throws Exception {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("sourceData",dataDto);
        jsonObject.put("filePath","tttttttttt");
        //  POST请求
        String url ="http://localhost:8888/test/addDocumentData";
        RestTemplate restTemplate = new RestTemplate();
        JSONObject body = restTemplate.postForEntity(url3,jsonObject, JSONObject.class).getBody();
        System.out.println(body);
    }

上传文件

public Object uplaod(@RequestBody JSONObject params) throws Exception{

        final String url = "http://localhost:8888/hello/m3";
        // 设置请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        FileSystemResource resource1 = new FileSystemResource("D:\\dir1\\ss\\pic1.jpg");
        FileSystemResource resource2 = new FileSystemResource("D:\\dir1\\ss\\pic2.jpg");
        // 设置请求体,注意是 LinkedMultiValueMap
        MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
        form.add("file", resource1);
        form.add("file", resource2);
        form.add("param1","value1");

        HttpEntity<MultiValueMap<String, Object>> files = new HttpEntity<>(form, headers);
        JSONObject s = restTemplate.postForObject(url, files, JSONObject.class);
        return s;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值