RestTemplate 服务接口调用方法

博客主要介绍RestTemplate常用的接口调用方法,包括GET请求的getForEntity和POST请求的postForObject。详细说明了不同请求在客户端有无参数、服务器接收参数的情况,还提醒了使用中的注意事项,如GET请求属性赋值可能失败,POST请求服务器需用@RequestBody解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RestTemplate是什么?

  RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,
  例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。
	一般使用Apache的HttpClient

直接上代码,本博客只是介绍常用掉接口的方法!自行截取…
同意表面这里的常用的参数

RestTemplate 的常用请求

  • getForEntity
    简称GET请求,传参基本数据类型及String类型 等等
    注意 : 如果属性有枚举的 赋值会失败!

Client(客户端)

无参数

		//返回值就是LoanFormVO的对象
		NewTest newTest = oauth2RestTemplateWapper.getOAuth2RestTemplate().getForEntity(apiUrl, NewTest.class).getBody();

带参数

			String name ="xxoo";
			int age ="21";
			//返回值就是NewTest 的对象
			NewTest newTest = oauth2RestTemplateWapper.getOAuth2RestTemplate().
			getForEntity(apiUrl.concat("?name={name}&age={age}"), NewTest.class,name,age).getBody();
	后面参数可以带很多个,但是apiUrl要加上 参数名={参数名} 不然可能取不到!

Server (服务器)

无参数

@RequestMapping("/getObj")
    public ResponseEntity getObj() {
        NewTest newTest  = newService.getObj();
        return ResponseEntity.ok().body(newTest);
    }

带参数

@RequestMapping("/getObj")
    public ResponseEntity getObj(@RequestParam("name")String name,@RequestParam("age")int age) {
        NewTest newTest  = newService.getObjByVar(name,age);
        return ResponseEntity.ok().body(newTest);
    }
  • postForObject

简称POST请求,可传参数 HttpEntity类型
上面介绍了,把参数拼接在apiUrl后面的方法,这样如果参数太长会导致请求异常,当前这个方法把参数包含在了HttpEntity当中,且安全性提高!

Client(客户端)

请求参数 list

 			//参数
 			List list=new ArrayList<>();
 			list.add("英雄联盟");
 			list.add("和平精英");
 			//请求头
 			HttpHeaders headers = new HttpHeaders();
            MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
            headers.setContentType(type);
            headers.add("Accept",MediaType.APPLICATION_JSON.toString());
            //放参数
            HttpEntity<Object> formEntity = new HttpEntity<Object>(list, headers);
            //开始请求  返回值 定义Map
			Map map = oauth2RestTemplateWapper.getOAuth2RestTemplate().postForObject(apiUrl, formEntity,Map.class);

请求参数 对象

User user=new User();
user.setId("1");
user.setName("苦逼程序员");
user.setAddress("上海");
//反正 没对象的单身狗 刚好new一个自己喜欢的对象 丢在第二个参数
String object = oauth2RestTemplateWapper.getOAuth2RestTemplate().postForObject(apiUrl,user, String.class);

Server (服务器)

接收参数 list


	@PostMapping("getData")
    public ResponseEntity getData(HttpServletRequest request) {
        Map map = new ConcurrentHashMap();
        List list=new ArrayList();
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
        //解析body获得参数
        String tmpStr= null;
        byte[] content = new byte[0];
        try {
            content = IOUtils.toByteArray(request.getInputStream());
            tmpStr = new String(content,"UTF-8");
            //解析出list
            list=gson.fromJson(tmpStr,new TypeToken<List>(){}.getType());
        } catch (IOException e) {
            logger.info("同步资质申请数据:{e}",e);
        }
        return  ResponseEntity.ok().body(null);
    }

接收参数 对象
注意接收对象的服务器参数里面要交@RequestBody解析,不然可能属性赋值不上,就是对象属性全是null!


	@PostMapping("saveUser")
    public ResponseEntity saveUser(@RequestBody User user){
      
        Integer integer = UserServce.saveUser(user);
        return ResponseEntity.ok().body(integer);
    }
    
	希望能对观看的你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值