玩转Spring Boot之RestTemplate的使用

1 REST模板简介

在java代码中,我们考虑停行restful web客户端办事,一般利用Apache HttpClient。并且那种办法用起来太繁琐了。Spring Boot供给了一个复杂便利的内置模板类来停行把持,那就是RestTemplate。

resttemplate的根本应用2.1附件:

Spring Boot的web starter曾经内置了RestTemplate Bean。我们的次要需求是将它引入到我们的Spring上下文中,然后我们能够通过停行复杂的设备设置来间接利用它。

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.76</version></dependency>2.2 Web办事完毕代码:

那个当地代码感化于Http恳求的办事端:

/** * @desc: HTTP效劳端 * @author: YanMingXin * @create: 2022/1/15-18:08 **/@RestControllerpublic class RestControllerDemo { /** * 普通Get * * @param name * @return */ @GetMapping("/get") private String getMethod(@RequestParam("name") String name) { System.out.println("getMethod : name=" + name); return name; } /** * Restful Get * * @param name * @return */ @GetMapping("/getName/{name}") private String getRestName(@PathVariable("name") String name) { System.out.println("getRestName : name=" + name); return name; } /** * post * * @param name * @return */ @PostMapping("/post") private String postMethod(@RequestParam("name") String name) { System.out.println("postMethod : name=" + name); return name; } /** * post json * * @param stu * @return */ @PostMapping("/postBody") public String postBodyMethod(@RequestBody String stu) { Student student = JSONObject.parSEObject(stu, Student.class); System.out.println("postBodyMethod : student=" + student); return student.toString(); } /** * delete * * @param name * @return */ @DeleteMapping("/delete") public String deleteMethod(@RequestParam("name") String name) { System.out.println("deleteMethod : name=" + name); return name; } /** * put * * @param name * @return */ @PutMapping("/put") public String putMethod(@RequestParam("name") String name) { System.out.println("putMethod : name=" + name); return name; }}2.3 RestTemplate代码:

设置设备:

/** * @desc: RestTemplate设置配备安排 * @author: YanMingXin * @create: 2022/1/15-17:34 **/@Configurationpublic class RestTemplateConfig { @Bean public RestTemplate restTemplate(ClientHttpRequestFactory factory) { return new RestTemplate(factory); } @Bean public ClientHttpRequestFactory simpleClientHttpRequestFactory() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); factory.setReadTimeout(5000); factory.setConnectTimeout(15000); return factory; }}

利用测试:

@SpringBootTestclass DemoApplicationTests { @Resource private RestTemplate restTemplate; @Test void getTest() { String str = restTemplate.getForObject("http://localhost:8888/get?name=zs", String.class); System.out.println(str); } @Test void getRestTest() { String name = "ls"; String str = restTemplate.getForObject("http://localhost:8888/getName/" + name, String.class); System.out.println(str); } @Test void postTest() { LinkedMultiValueMap<String, String> map = new LinkedMultiValueMap<>(); map.set("name", "zs"); String str = restTemplate.postForObject("http://localhost:8888/post", map, String.class); System.out.println(str); } @Test void postBodyTest() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); headers.setContentType(type); headers.add("Accept", MediaType.APPLICATION_JSON.toString()); HashMap<String, Object> map = new HashMap<>(); map.put("name", "zs"); map.put("age", 23); String stu = JSON.toJSONString(map); HttpEntity<String> formEntity = new HttpEntity<String>(stu, headers); String str = restTemplate.postForObject("http://localhost:8888/postBody", formEntity, String.class); System.out.println(str); } @Test void putTest() { restTemplate.put("http://localhost:8888/put?name=zs", null); } @Test void deleteTest() { restTemplate.delete("http://localhost:8888/delete?name=zs"); }}3其他原料药的应用

Exchange():在URL上实现了一个特定的HTTP办法,该办法抵达包罗东西的ResponseEntity,该东西来自echo主体。

反射丧失

execute(): 正在URL上履行特定的HTTP法子,前去一个从照应体映照失掉的东西getForEntity(): 发送一个GET哀告,前去的ResponseEntity包罗了照应体所映照成的东西getForObject() :发送一个GET哀告,前去的哀告体将映照为一个东西

Postivity():将数据发布到一个URL,并转到ResponseEntity,包罗一个东西,它从echo主体中反映出来。

抵达

postForObject() :POST 数据到一个URL,前去根据照应体婚配构成的东西4留意。RestTemplate需求手动的注入到咱们本人的Spring Context中本领停行运用,不成以间接正在一个营业类中注入运用。运用POST体例的JSON格局停行哀告时,需求设置配备安排http报文的header哀告头中的报文格局。

您可以还会对下面的文章感兴趣:

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。