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

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){}

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

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

    3.@RequestBody,用于Post请求;

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

二、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 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);

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);
2.1.2 public T getForObject(String url, Class responseType,Object… uriVariables)
restTemplate.getForObject("Http://localhost:8083/test1/hello1/{name}",String.class,name);
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);
}

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;
}
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;
    }
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;
    }

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);
}

总结

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值