时间:2021-05-20
一restTemplate简介
restTemplate底层是基于HttpURLConnection实现的restful风格的接口调用,类似于webservice,rpc远程调用,但其工作模式更加轻量级,方便于rest请求之间的调用,完成数据之间的交互,在springCloud之中也有一席之地。大致调用过程如下图
二restTemplate常用方法列表
forObeject跟forEntity有什么区别呢?主要的区别是forEntity的功能更加强大一些,其返回值是一个ResponseEntity,更加方便我们获得响应的body,head等信息。exchange方法和其他方法不同之处就是能自己定义的rest请求方式。
2.1 get请求方法预览
2.2 post方法请求预览
2.3put请求方法预览
2.4 delete请求方法预览
2.5exchange方法预览
三rest接口调用示例
restTemplate配置
首先本次示例采用的是springboot2.x以上版本,javaSE8;其次发布的服务端是同一台机子,服务端端口8090,客户端端口8080;类路径youku1327;在实际工作中最常用是get,post请求方式;restTemplate简单配置如下:
/** * @Author lsc * @Description <p> </p> * @Date 2019/10/14 11:40 * @Version 1.0 */@Configurationpublic class RestTemplateConfig { // 配置 RestTemplate @Bean public RestTemplate restTemplate(ClientHttpRequestFactory factory){ return new RestTemplate(factory); } @Bean public ClientHttpRequestFactory simpleClientHttpRequestFactory(){ // 创建一个 httpCilent 简单工厂 SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); // 设置连接超时 factory.setConnectTimeout(15000); // 设置读取超时 factory.setReadTimeout(5000); return factory; }}3.1 get请求接口调用示例
服务费发布的端口
@GetMapping("user") public String getUser(){ return "youku1327"; } @GetMapping("user/{name}") public String getUserName(@PathVariable String name){ return name; }客户端调用
GET参数说明:
3.2 post请求示例
POST请求参数说明
第一个参数是url。第二个参数是请求参数。第三个参数是返回值类型。第三个参数是uri地址路径变量。
服务端发布接口
@PostMapping("provider") public ResponseEntity<String> addData(@RequestBody JSONObject jsonObject){ String user = (String) jsonObject.get("user"); return ResponseEntity.ok(user); }客户端接口调用
/* * @Author lsc * @Description <p> post</p> * @Date 2019/10/18 23:23 * @Param [] * @return void **/ @Test public void testPostMethod() throws MalformedURLException { JSONObject jsonObject = new JSONObject(); jsonObject.put("user","youku1327"); HttpHeaders httpHeaders = new HttpHeaders(); // 设置请求类型 httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8); // 封装参数和头信息 HttpEntity<JSONObject> httpEntity = new HttpEntity(jsonObject,httpHeaders); String url = "http://localhost:8090/youku1327/provider"; ResponseEntity<String> mapResponseEntity = restTemplate.postForEntity(url, httpEntity, String.class); System.out.println(mapResponseEntity.getBody()); }3.3 put接口调用示例
PUT请求参数说明
第一个参数是url。第二个参数是请求参数。第三个参数是uri地址路径变量。
服务端发布接口
@PutMapping("provider/{id}") public ResponseEntity<JSONObject> updateData(@PathVariable Long id, @RequestBody JSONObject jsonObject){ Object object = jsonObject.get("user"); jsonObject.put("id",id); // {"id":1327,"user":"youku1327"} System.out.println(jsonObject); return ResponseEntity.ok(jsonObject); }客户端接口调用
/* * @Author lsc * @Description <p> put</p> * @Date 2019/10/18 23:23 * @Param * @return **/ @Test public void testPutMethod() throws MalformedURLException { JSONObject jsonObject = new JSONObject(); jsonObject.put("user","youku1327"); HttpHeaders httpHeaders = new HttpHeaders(); // 设置请求类型 httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8); // 封装参数和头信息 HttpEntity<JSONObject> httpEntity = new HttpEntity(jsonObject,httpHeaders); String url = "http://localhost:8090/youku1327/provider/{id}"; restTemplate.put(url, httpEntity, 1327); }3.4delete请求示例
DELETE请求参数说明
第一个参数是url第二个参数uri地址路径变量。
服务端发布接口
@DeleteMapping("provider/{id}") public ResponseEntity<String> delData(@PathVariable Long id){ String result = "delete"+id+"success"; // delete1327success System.out.println(result); return ResponseEntity.ok(result); }客户端调用接口
/* * @Author lsc * @Description <p> delete</p> * @Date 2019/10/18 23:22 * @Param [] * @return void **/ @Test public void testDelete(){ String url = "http://localhost:8090/youku1327/provider/{id}"; restTemplate.delete(url,1327); }3.5 exchange
参数说明:
第一个参数是url。第二个参数是请求方式。第三个参数是请求实体。第四个参数是返回值类型。第五个参数是uri地址变量。
服务端发布接口
@GetMapping("user/{name}") public String getUserName(@PathVariable String name){ return name; }客户端调用接口
/* * @Author lsc * @Description <p> exchange</p> * @Date 2019/10/18 23:22 * @Param [] * @return void **/ @Test public void testExchange(){ String url = "http://localhost:8090/youku1327/user/{name}"; HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED); HttpEntity httpEntity = new HttpEntity(httpHeaders); ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class, "youku1327"); System.out.println(exchange.getBody()); }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
开篇本例是在springboot整合H2内存数据库,实现单元测试与数据库无关性和使用RestTemplate消费springboot的Restful服务两个示例
在学习SpringBoot的过程中遇到一个问题,因为SpringBoot是集成了tomcat的,所以项目是打成jar包,通过SpringMVC注解的方式去运行的
SpringBoot集成MyBatis在集成MyBatis前,我们先配置一个druid数据源。SpringBoot集成druiddruid有很多个配置选项,使用
在上一节中,我带大家学习了详解SpringBoot集成Redis来实现缓存技术方案,尤其是结合SpringCache的注解的实现方案,接下来在本章节中,我带大家
详解springboot-修改内置tomcat版本1、解析SpringBoot父级依赖org.springframework.bootspring-boot-s