当前位置:   article > 正文

Get请求 Post请求 RestTemplate模板下的getForObject,getForEntity,postForObject,postForEntity的用法

getforobject

Spring框架之Get请求下的RestTemplate的getForObject和getForEntity的用法,Post请求下的postForObject,postForEntity的用法。


前言

本篇blog将介绍Spring管理下的RestTemplate模板在Get请求和Post请求下的不同用法,因为Get请求下和Post请求下的用法几乎一样,所以这里只对Get请求下的用法做介绍,Post请求下的参考Get请求即可!
主要包含:
    1.准备工作;
    2.RestTemplate模板的Get请求之GetForObject方式;
    3.RestTemplate模板的Get请求之GetForEntity方式;
    3.RestTemplate模板的Post请求demo;


一、准备工作

本例中涉及到三种后端接收参数的方式,注意看接口url的不同之处。先来介绍一下:
    1.@RequestParam,可用于Get请求,也可用于Post请求;

@GetMapping("/test2/hello")
public String Test1(@RequestParam("name")String name){}
  • 1
  • 2

    2.@PathVariable,用于Get请求,Post请求亦可;

@GetMapping("/test2/hello2/{name}")
public String Test2(@PathVariable("name") String name){}
  • 1
  • 2

    3.@RequestBody,用于Post请求;

@PostMapping("/test2/hello3")
public String Test3(@RequestBody String name){}
  • 1
  • 2

二、RestTemplate模板的Get请求之GetForObject方式

1.构造函数

1.1 getForObject的构造函数

public <T> T getForObject(String url, Class<T> responseType,Object... uriVariables);
public <T> T getForObject(String url, Class<T> responseType,Map<String, ?> uriVariables);
public <T> T getForObject(URI url, Class<T> responseType);
  • 1
  • 2
  • 3

1.2 getForEntity的构造函数

public <T> T getForEntity(String url, Class<T> responseType, Object... uriVariables);
public <T> T getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables); 
public <T> T getForEntity(URI url, Class<T> responseType);
  • 1
  • 2
  • 3

2.Get请求方式又分为GetForObject和GetForEntity两种

2.1 GetForObject形式

2.1.1 public T getForObject(URI url, Class responseType)
restTemplate.getForObject("http://localhost:8083/test1/hello?name="+name,String.class);
  • 1
2.1.2 public T getForObject(String url, Class responseType,Object… uriVariables)
restTemplate.getForObject("Http://localhost:8083/test1/hello1/{name}",String.class,name);
  • 1
2.1.3 public T getForObject(String url, Class responseType,Map<String, ?> uriVariables)

注意:使用map传参需要固定RestTemplate访问的uri格式。

@GetMapping("/test2/hello3/{name}/{age}")
public String Test3(@PathVariable("name") String name,@PathVariable("age") int age){
    Map<String, Object> hashMap = new HashMap<>();
    hashMap.put("name",name);
    hashMap.put("age",age);
    return restTemplate.getForObject("http://localhost:8083/test1/hello2/{name}/{age}",String.class,hashMap);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.2 GetForEntity形式

注:GetForEntity和GetForObject用法几乎一致,只有细微差别,前者可以查看请求状态码,请求头信息。

2.2.1 public T GetForEntity(URI url, Class responseType)
@GetMapping("/test2/hello")
public String Test1(@RequestParam("name")String name){
    ResponseEntity<String> forEntity = restTemplate.getForEntity("http://localhost:8083/test1/hello?name=" + name, String.class);
    if (forEntity.getStatusCodeValue() == 200){
        //获取状态码
        forEntity.getStatusCode();
        //获取请求头
        forEntity.getHeaders();
        //获取请求体内容
        return forEntity.getBody();
    }
    return null;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
2.2.2 public T GetForEntity(String url, Class responseType,Object… uriVariables)
@GetMapping("/test2/hello2/{name}/{age}")
    public String Test2(@PathVariable("name") String name,@PathVariable int age){
        System.out.println(name+" "+age);
        System.out.println("test2/hello2");
        ResponseEntity<String> forEntity = restTemplate.getForEntity("Http://localhost:8083/test1/hello1/{name}", String.class, name);
        if (forEntity.getStatusCodeValue() == 200){
            return forEntity.getBody();
        }
        return null;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
2.2.3 public T GetForEntity(String url, Class responseType,Map<String, ?> uriVariables)

注意:使用map传参需要固定RestTemplate访问的uri格式。

@GetMapping("/test2/hello3/{name}/{age}")
    public String Test3(@PathVariable("name") String name,@PathVariable("age") int age){
        Map<String, Object> hashMap = new HashMap<>();
        hashMap.put("name",name);
        hashMap.put("age",age);
        ResponseEntity<String> forEntity = restTemplate.getForEntity("http://localhost:8083/test1/hello2/{name}/{age}", String.class, hashMap);
        if(forEntity.getStatusCodeValue() == 200){
            return forEntity.getBody();
        }
        return null;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3.RestTemplate模板的Post请求demo

注:Post请求方式和Get请求方式基本一样,包括postForObject和postForEntity两种,需要注意Post请求接参数的注解用的是@RequestBody,具体举一个例子,其他的请参考Get请求方式:

@PostMapping("/test2/hello3")
public String Test3(@RequestBody String name){
    System.out.println("test2/hello3");
    return restTemplate.postForObject("http://localhost:8083/test1/hello2",name,String.class);
}
  • 1
  • 2
  • 3
  • 4
  • 5

总结

以上内容就是关于restTemplate模板在两种请求方式:Get请求和Post请求下的访问形式,因本人也在学习中,如有错误不足之处欢迎大佬进行指正。希望对你能有所帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/302976
推荐阅读
相关标签
  

闽ICP备14008679号