当前位置: 首页 >服务端 > 三种方法实现调用Restful接口

三种方法实现调用Restful接口

1.基本介绍

  Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多,

  本次介绍三种:

    1.HttpURLConnection实现

    2.HttpClient实现

    3.Spring的RestTemplate

 

2.HttpURLConnection实现

三种方法实现调用Restful接口 _ JavaClub全栈架构师技术笔记
 1 @Controller 2 public class RestfulAction { 3  4 @Autowired 5 private UserService userService; 6  7 // 修改 8 @RequestMapping(value = "put/{param}", method = RequestMethod.PUT) 9 public @ResponseBody String put(@PathVariable String param) {10 retu "put:" + param;11 }12 13 // 新增14 @RequestMapping(value = "post/{param}", method = RequestMethod.POST)15 public @ResponseBody String post(@PathVariable String param,String id,String name) {16 System.out.println("id:"+id);17 System.out.println("name:"+name);18 retu "post:" + param;19 }20 21 22 // 删除23 @RequestMapping(value = "delete/{param}", method = RequestMethod.DELETE)24 public @ResponseBody String delete(@PathVariable String param) {25 retu "delete:" + param;26 }27 28 // 查找29 @RequestMapping(value = "get/{param}", method = RequestMethod.GET)30 public @ResponseBody String get(@PathVariable String param) {31 retu "get:" + param;32 }33 34 35 // HttpURLConnection 方式调用Restful接口36 // 调用接口37 @RequestMapping(value = "dealCon/{param}")38 public @ResponseBody String dealCon(@PathVariable String param) {39 try {40 String url = "http://localhost:8080/tao-manager-web/";41 url+=(param+"/xxx");42 URL restServiceURL = new URL(url);43 HttpURLConnection httpConnection = (HttpURLConnection) restServiceURL44 .openConnection();45 //param 输入小写,转换成 GET POST DELETE PUT 46 httpConnection.setRequestMethod(param.toUpperCase());47 //httpConnection.setRequestProperty("Accept", "application/json");48 if("post".equals(param)){49 //打开输出开关50 httpConnection.setDoOutput(true);51 //httpConnection.setDoInput(true);52 53 //传递参数54 String input = "&id="+ URLEncoder.encode("abc", "UTF-8");55 input+="&name="+ URLEncoder.encode("啊啊啊", "UTF-8");56 OutputStream outputStream = httpConnection.getOutputStream();57 outputStream.write(input.getBytes());58 outputStream.flush();59 }60 if (httpConnection.getResponseCode() != 200) {61 throw new RuntimeException(62 "HTTP GET Request Failed with Error code : "63 + httpConnection.getResponseCode());64 }65 BufferedReader responseBuffer = new BufferedReader(66 new InputStreamReader((httpConnection.getInputStream())));67 String output;68 System.out.println("Output from Server:  \n");69 while ((output = responseBuffer.readLine()) != null) {70 System.out.println(output);71 }72 httpConnection.disconnect();73 } catch (MalformedURLException e) {74 e.printStackTrace();75 } catch (IOException e) {76 e.printStackTrace();77 }78 retu "success";79 }80 81 }
三种方法实现调用Restful接口 _ JavaClub全栈架构师技术笔记

 

 

 

3.HttpClient实现

三种方法实现调用Restful接口 _ JavaClub全栈架构师技术笔记
  1 package com.taozhiye.controller;  23 import org.apache.http.HttpEntity;  4 import org.apache.http.HttpResponse;  5 import org.apache.http.NameValuePair;  6 import org.apache.http.client.HttpClient;  7 import org.apache.http.client.entity.UrlEncodedFormEntity;  8 import org.apache.http.client.methods.HttpDelete;  9 import org.apache.http.client.methods.HttpGet; 10 import org.apache.http.client.methods.HttpPost; 11 import org.apache.http.client.methods.HttpPut; 12 import org.apache.http.impl.client.HttpClients; 13 import org.apache.http.message.BasicNameValuePair; 14 import org.springframework.beans.factory.annotation.Autowired; 15 import org.springframework.stereotype.Controller; 16 import org.springframework.web.bind.annotation.PathVariable; 17 import org.springframework.web.bind.annotation.RequestMapping; 18 import org.springframework.web.bind.annotation.RequestMethod; 19 import org.springframework.web.bind.annotation.ResponseBody; 20  21 import com.fasterxml.jackson.databind.ObjectMapper; 22 import com.taozhiye.entity.User; 23 import com.taozhiye.service.UserService; 24  25 import java.io.BufferedReader; 26 import java.io.IOException; 27 import java.io.InputStreamReader; 28 import java.io.OutputStream; 29 import java.net.HttpURLConnection; 30 import java.net.MalformedURLException; 31 import java.net.URL; 32 import java.net.URLEncoder; 33 import java.util.ArrayList; 34 import java.util.List; 35  36 @Controller 37 public class RestfulAction { 38  39 @Autowired 40 private UserService userService; 41  42 // 修改 43 @RequestMapping(value = "put/{param}", method = RequestMethod.PUT) 44 public @ResponseBody String put(@PathVariable String param) { 45 retu "put:" + param; 46 } 47  48 // 新增 49 @RequestMapping(value = "post/{param}", method = RequestMethod.POST) 50 public @ResponseBody User post(@PathVariable String param,String id,String name) { 51 User u = new User(); 52 System.out.println(id); 53 System.out.println(name); 54 u.setName(id); 55 u.setPassword(name); 56 u.setEmail(id); 57 u.setUseame(name); 58 retu u; 59 } 60  61  62 // 删除 63 @RequestMapping(value = "delete/{param}", method = RequestMethod.DELETE) 64 public @ResponseBody String delete(@PathVariable String param) { 65 retu "delete:" + param; 66 } 67  68 // 查找 69 @RequestMapping(value = "get/{param}", method = RequestMethod.GET) 70 public @ResponseBody User get(@PathVariable String param) { 71 User u = new User(); 72 u.setName(param); 73 u.setPassword(param); 74 u.setEmail(param); 75 u.setUseame("爱爱啊"); 76 retu u; 77 } 78  79  80  81 @RequestMapping(value = "dealCon2/{param}") 82 public @ResponseBody User dealCon2(@PathVariable String param) { 83 User user = null; 84 try { 85 HttpClient client = HttpClients.createDefault(); 86 if("get".equals(param)){ 87 HttpGet request = new HttpGet("http://localhost:8080/tao-manager-web/get/" 88 +"啊啊啊"); 89 request.setHeader("Accept", "application/json"); 90 HttpResponse response = client.execute(request); 91 HttpEntity entity = response.getEntity(); 92 ObjectMapper mapper = new ObjectMapper(); 93 user = mapper.readValue(entity.getContent(), User.class); 94 }else if("post".equals(param)){ 95 HttpPost request2 = new HttpPost("http://localhost:8080/tao-manager-web/post/xxx"); 96 List<NameValuePair> nvps = new ArrayList<NameValuePair>();97 nvps.add(new BasicNameValuePair("id", "啊啊啊"));98 nvps.add(new BasicNameValuePair("name", "secret")); 99 UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nvps, "GBK");100 request2.setEntity(formEntity);101 HttpResponse response2 = client.execute(request2);102 HttpEntity entity = response2.getEntity();103 ObjectMapper mapper = new ObjectMapper();104 user = mapper.readValue(entity.getContent(), User.class);105 }else if("delete".equals(param)){106 107 }else if("put".equals(param)){108 109 }110 } catch (Exception e) {111 e.printStackTrace();112 }113 retu user;114 }115 116 117 }
三种方法实现调用Restful接口 _ JavaClub全栈架构师技术笔记

 

4.Spring的RestTemplate

springmvc.xml增加

三种方法实现调用Restful接口 _ JavaClub全栈架构师技术笔记
 1 <!-- 配置RestTemplate --> 2 <!--Http client Factory --> 3 <bean id="httpClientFactory" 4 class="org.springframework.http.client.SimpleClientHttpRequestFactory"> 5 <property name="connectTimeout" value="10000" /> 6 <property name="readTimeout" value="10000" /> 7 </bean> 8  9 <!--RestTemplate -->10 <bean id="restTemplate" class="org.springframework.web.client.RestTemplate">11 <constructor-arg ref="httpClientFactory" />12 </bean>
三种方法实现调用Restful接口 _ JavaClub全栈架构师技术笔记

controller

三种方法实现调用Restful接口 _ JavaClub全栈架构师技术笔记
 1 @Controller 2 public class RestTemplateAction { 3  4 @Autowired 5 private RestTemplate template; 6  7 @RequestMapping("RestTem") 8 public @ResponseBody User RestTem(String method) { 9 User user = null;10 //查找11 if ("get".equals(method)) {12 user = template.getForObject(13 "http://localhost:8080/tao-manager-web/get/{id}",14 User.class, "呜呜呜呜");15 16 //getForEntity与getForObject的区别是可以获取返回值和状态、头等信息17 ResponseEntity<User> re = template.18 getForEntity("http://localhost:8080/tao-manager-web/get/{id}",19 User.class, "呜呜呜呜");20 System.out.println(re.getStatusCode());21 System.out.println(re.getBody().getUseame());22 23 //新增24 } else if ("post".equals(method)) {25 HttpHeaders headers = new HttpHeaders();26 headers.add("X-Auth-Token", UUID.randomUUID().toString());27 MultiValueMap<String, String> postParameters = new LinkedMultiValueMap<String, String>();28 postParameters.add("id", "啊啊啊");29 postParameters.add("name", "部版本");30 HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(31 postParameters, headers);32 user = template.postForObject(33 "http://localhost:8080/tao-manager-web/post/aaa", requestEntity,34 User.class);35 //删除36 } else if ("delete".equals(method)) {37 template.delete("http://localhost:8080/tao-manager-web/delete/{id}","aaa");38 //修改39 } else if ("put".equals(method)) {40 template.put("http://localhost:8080/tao-manager-web/put/{id}",null,"bbb");41 }42 retu user;43 44 }45 }
三种方法实现调用Restful接口 _ JavaClub全栈架构师技术笔记

 

作者:牧之丨
来源链接:https://www.cnblogs.com/exmyth/p/10774308.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/112478.html

标签:RESTful
分享给朋友:

“三种方法实现调用Restful接口” 的相关文章

划分子网和构造超网的学习 2022年05月17日 13:57:19
[C#]richtextbox实现行号 2022年05月17日 20:27:54
配置 yum 源的两种方法 2022年05月19日 19:54:29
go mod 相关的八个命令 2022年05月23日 20:17:45
如何学习一门语言 2022年05月23日 21:03:30
Servlet JSP 二重修炼:Filter过滤器 2022年05月26日 20:15:41
Tomcat服务器目录结构 2022年05月28日 22:49:58
大流量下的 ElasticSearch 搜索演进 2022年05月28日 23:12:48
炒冷饭系列:设计模式 原型模式 2022年05月30日 22:50:53