您的位置:首页 > 其它

Restful接口实现方法

2017-05-27 15:34 190 查看
1.基本介绍

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

  本次介绍三种:

    1.HttpURLConnection实现

    2.HttpClient实现

    3.Spring的RestTemplate

 

2.HttpURLConnection实现

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         return "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         return "post:" + param;
19     }
20
21
22     // 删除
23     @RequestMapping(value = "delete/{param}", method = RequestMethod.DELETE)
24     public @ResponseBody String delete(@PathVariable String param) {
25         return "delete:" + param;
26     }
27
28     // 查找
29     @RequestMapping(value = "get/{param}", method = RequestMethod.GET)
30     public @ResponseBody String get(@PathVariable String param) {
31         return "get:" + param;
32     }
33
34
35     // HttpURLConnection 方式调用Restful接口
36     // 调用接
4000
口
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) restServiceURL
44                     .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         return "success";
79     }
80
81 }


 

 

 

3.HttpClient实现

1 package com.taozhiye.controller;
2
3 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         return "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.setUsername(name);
58         return u;
59     }
60
61
62     // 删除
63     @RequestMapping(value = "delete/{param}", method = RequestMethod.DELETE)
64     public @ResponseBody String delete(@PathVariable String param) {
65         return "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.setUsername("爱爱啊");
76         return 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         return user;
114     }
115
116
117 }


 

4.Spring的RestTemplate


springmvc.xml增加

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>


controller

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().getUsername());
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         return user;
43
44     }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: