RestTemplate 服务接口调用方法

RestTemplate是什么?

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

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

  • apiUrl 请求路径 例如: localhost:8080/api/test 。一般是IP+端口+请求路径

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);
    }
    
	希望能对观看的你有帮助!

你可能感兴趣的:(IT,springcloud,微服务,java,restful,spring,resttemplate,post)