RestTemplate对象,进行get和post简单用法

如果只是针对纯Rest接口处理的话,我们可以使用restTemplate对象来操作,简单方便,可以不需要手写httpClient代码了。

我们看下基本的用法,如下:

1.getForObject

client:
@RestController
@RequestMapping("restTemp")
public class RestTemplateController {
    @GetMapping("getTest1")
    public void getTest1(){
        String url = "http://具体iP地址/demo/demoTest?name={name}&email={email}";
        Map<String,String> params = new HashMap<>();
        params.put("name","yyc");
        params.put("email","12306");
        RestTemplate restTemplate = new RestTemplate();
        String request = restTemplate.getForObject(url,String.class,params);
        //String request = restTemplate.getForObject(url,String.class,"yyc","email");
        System.out.println(request);
    }
}

server:
@GetMapping(value = "demoTest", produces = MediaType.APPLICATION_JSON_VALUE)
public String demoTest(@RequestParam String name,@RequestParam String email){
        System.out.println(name);
        System.out.println(email);
        return "success";
}

2.getForEntity

client:

@GetMapping("getTest2")
    public void getTest2(){
        String url = "http://具体iP地址:8080/demo/demoTest?name={name}&email={email}";
        HttpHeaders headers = new HttpHeaders();
        headers.set("phone","123456");
        Map<String,Object> params = new HashMap<>();
        params.put("name","yyc");
        params.put("email","12306");
        RestTemplate restTemplate = new RestTemplate();
        HttpEntity httpEntity = new HttpEntity(headers);
        ResponseEntity<String> request = restTemplate.getForEntity(url,String.class,httpEntity,params);
        System.out.println(request.getBody());
    }

server:
@GetMapping(value = "demoTest1", produces = MediaType.APPLICATION_JSON_VALUE)
    public String demoTest1(@RequestParam String name, @RequestParam String email, @RequestHeader String phone){
        System.out.println(name);
        System.out.println(email);
        System.out.println(phone);
        return "success";
    }

3.postForObject

这里的User类是实体类,在此本人不写了,请自行创建 User Entity。

server:

@PostMapping(value = "demoTest2", consumes = MediaType.APPLICATION_JSON_VALUE,produces = MediaType.APPLICATION_JSON_VALUE)
    public String demoTest2(@RequestBody User user, @RequestHeader String phone){
        System.out.println(user.getName());
        System.out.println(user.getEmail());
        System.out.println(phone);
        return "success";
    }

client:
@PostMapping("postTest1")
    public void postTest1() {
        String url = "http://IP:8080/demo/demoTest2";
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.set("phone", "123456");
        Map<String, Object> params = new HashMap<>();
        params.put("name", "yyc");
        params.put("email", "12306");
        RestTemplate restTemplate = new RestTemplate();
        HttpEntity httpEntity = new HttpEntity(params,headers);
        ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity,String.class);
        System.out.println(request.getBody());
    }


当所有传递的数据类型为复杂数据类型: headers.setContentType(MediaType.MULTIPART_FORM_DATA);

并且需要接受的参数不再实体类中进行映射。

MultiValueMap来进行传递。

server:

@PostMapping(value = "demoTest3",produces = MediaType.APPLICATION_JSON_VALUE)
    public String demoTest3(@RequestParam String  name,String email, @RequestHeader String phone){
        System.out.println(name);
        System.out.println(email);
        System.out.println(phone);
        return "success";
    }

client:
@PostMapping("postTest2")
    public void postTest2() {
        String url = "http://ip:8080/demo/demoTest3";
        HttpHeaders headers = new HttpHeaders();
        headers.set("phone", "1234567");
        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
        params.add("name", "yyc");
        params.add("email", "123067");
        RestTemplate restTemplate = new RestTemplate();
        HttpEntity httpEntity = new HttpEntity(params, headers);
        ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
        System.out.println(request.getBody());
    }



既有实体类,又有普通的参数
server:
@PostMapping(value = "demoTest4",produces = MediaType.APPLICATION_JSON_VALUE)
    public String demoTest4(@RequestBody User user,String sex, @RequestHeader String phone){
        System.out.println(user.getName());
        System.out.println(user.getEmail());
        System.out.println(sex);
        System.out.println(phone);
        return "success";
    }

client:
@PostMapping("postTest3")
    public void postTest3() {
        String url = "http://ip:8080/demo/demoTest4?sex={sex}";
        HttpHeaders headers = new HttpHeaders();
        headers.set("phone", "1234567");
        Map<String, Object> params = new HashMap<>();
        params.put("name", "yyc");
        params.put("email", "123067");
        Map<String,Object> other = new HashMap<>();
        other.put("sex","男");
        RestTemplate restTemplate = new RestTemplate();
        HttpEntity httpEntity = new HttpEntity(params, headers);
        ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class,other);
        System.out.println(request.getBody());
    }




 





posted @   JimmyShan  阅读(2699)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示