首页 > 编程知识 正文

java开发restful接口实例,resttemplate使用

时间:2023-05-03 05:40:24 阅读:165344 作者:3499

RestTemplate调用rest接口APP应用层: HTTP

传输层:保证传输控制协议(TCP )通信数据有序可靠的端口号: 80

网络层: IP地址DNS域名服务器解析域名

数据链路层物理层:完成数据传输

一次http请求的过程:

1、域名解析为ip地址

2、与服务器ip端口号的TCP连接成功

3、发送http请求并获得回复

4、浏览器渲染显示HTML

URL的组成http://www.example.com/

HTTP3360架构协议是可选的(浏览器默认)

可以在域名后加上端口号,默认值80是可选的。

最后一个斜线表示服务器根路径下的资源。

消息的含义参考RFC文档。

要使RestTemplate调用rest接口,必须首先注入RestTemplate并创建配置文件。

1:apachehttpcomponents (http客户端) )。

2:Netty ) )网络通信库) ) ) ) )。

3:OkHttp

//用构建方法交换基础的执行引擎。 返回新重置模板(; //缺省为jdk的HttpUrlConnection; returnnewresttemplate (newhttpcomponentsclienthttprequestfactory () ); //这是一个HTTP客户端,需要引入依赖关系。 @ configurationpublicclassresttemplateconfig { @ autowiredprivateresttemplatebuilderrestemplatebuilder; @ beanpublicresttemplateresttemplate ((returnresttemplatebuilder.setconnecttimeout ) duration.ofseconds(12000 ) ) )

publicvoidsendmailbycm 01 ((string data=((n ) ) (receivers () : () 10256056 ),(n () ) subject ', n ' ) string URL=' http://10.7.224.16:8888/mail '; responseentitystringobjectresponseentity=rest template.postforentity (URL,data,String.class ); system.out.println (objectresponseentity.getbody (); 2:restTemplate.postForEntity采用实体bean参数。 (编写代码时,可以将set方法的返回值设置为实例本身。 )

@data@accessors(chain=true ) publicclassmailbean { privatestring receivers; 私有字符串订阅; 私有字符串邮件; 私有字符串邮件类型; } httpheadershttpheaders=newhttpheaders (; http headers.set content type (media type.application _ JSON ); 邮件bean邮件bean=new邮件bean (; mailbean.setreceivers(10256056 ) ).setSubject ) )测试来电参数为bean ).set mailmsg (1sfsefscvdsvsdcvdvdvdfvd胡同) ) )。 httpentitymailbeanhttpentity=newhttpentity (mail bean,httpHeaders ); string URL=' http://10.7.224.16:8888/mail '; responseentitystringobjectresponseentity=rest template.postforentity (

l, httpEntity, String.class);System.out.println(objectResponseEntity.getBody());

3:restTemplate.exchange采用实体bean传参:(方便书写代码可以将set方法的返回值设置为实例本身。)
如果不带httpheaders的话,httpentity的构造参数可以只带mailBean,相当于包装了下mailBean。
HttpEntity httpEntity = new HttpEntity<>(mailBean);

ResponseEntity<String> objectResponseEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);System.out.println(objectResponseEntity.getBody());

其他几个get接口:(全链接)

String url = "http://syste****ail";ResponseEntity<String> forObject = restTemplate.getForEntity(url, String.class);log.info("rest template get: {}", forObject.getBody());return forObject.getBody();

分链接1(拼接url的方式,使用getForObject)
@param uriVariables the variables to expand the template

String url = "http://sy******es?changeId={changeId}&project={project}&branch={branch}&detail";String forObject = restTemplate.getForObject(url, String.class, "Ifd84*****f8100c", "***spa", "Cv");log.info("rest template get: {}", forObject);return forObject;

分链接2(拼接url的方式,使用getForObject)返回string

String url = "http://syses?changeId={1}&project={2}&branch={3}&detail";String forObject = restTemplate.getForObject(url, String.class, "Ifd**c", "5**spa", "Dev");log.info("rest template get: {}", forObject);return forObject;

分链接2(拼接url的方式,使用getForObject)返回jsonobject

String url = "http://sys****s?changeId={1}&project={2}&branch={3}&detail";JSONObject forObject = restTemplate.getForObject(url, JSONObject.class, "If**0c", "**spa", "**ev");log.info("rest template get: {}", forObject);return forObject.toString();

使用url:

try { String url = "http://syst**s?detail"; URI uri = new URIBuilder(url) .addParameter("changeId", "If**0c") .addParameter("project", "5*pa") .addParameter("branch", "C**Dev") .build(); ResponseEntity<JSONObject> forObject = restTemplate.exchange(uri, HttpMethod.GET, null, JSONObject.class); log.info("rest template get: {}", forObject.getBody().toString()); return forObject.getBody().toString();} catch (Exception e) { e.printStackTrace(); return "error";}

使用url与RequestEntity

try { String url = "http:***es?detail"; URI uri = new URIBuilder(url) .addParameter("changeId", "If**0c") .addParameter("project", "5**spa") .addParameter("branch", "Dev") .build(); RequestEntity requestEntity = new RequestEntity(HttpMethod.GET, uri); ResponseEntity<JSONObject> forObject = restTemplate.exchange(requestEntity, JSONObject.class); log.info("rest template get: {}", forObject.getBody().toString()); return forObject.getBody().toString();} catch (Exception e) { e.printStackTrace(); return "error";}

上传与下载文件

/** * 上传文件 */public String uploadFile(MultipartFile file, String uuid) throws IOException { String fileName = file.getOriginalFilename(); log.info("开始上传文件,文件名称:{},路径:{}", fileName, uuid); HttpHeaders headers = new HttpHeaders(); headers.set("X-JFrog-Art-Api", "artFactoryConfiguration.getToken()"); headers.setContentType(MediaType.MULTIPART_FORM_DATA); HttpEntity httpEntity = new HttpEntity(file.getBytes(), headers); String url = "artFactoryConfiguration.getUrl()" + "/" + uuid + "/" + fileName; ResponseEntity<JSONObject> exchange = restTemplate.exchange(url, HttpMethod.PUT, httpEntity, JSONObject.class); if (exchange.getStatusCode().is2xxSuccessful() && exchange.getBody().getString("createdBy").equals("wxxalte")) { log.info("文件上传成功,文件名称:{},路径:{}", fileName, uuid); return "success"; } log.info("文件上传失败,文件名称:{},路径:{}", fileName, uuid); return "fail";}/** * 下载文件 */public void downloadFile(String keyCode, String fileName, HttpServletResponse resp) throws IOException { log.info("开始下载文件,文件名称:{},路径:{}", fileName, keyCode); HttpHeaders headers = new HttpHeaders(); headers.set("X-JFrog-Art-Api", ""); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); HttpEntity httpEntity = new HttpEntity(null, headers); String url = "" + "/" + keyCode + "/" + fileName; ResponseEntity<byte[]> responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, byte[].class); log.info("response content length: " + responseEntity.getHeaders().getContentLength()); log.info("response content type: " + responseEntity.getHeaders().getContentType()); // 设置下载后的文件名以及header resp.setHeader("content-type", "application/octet-stream"); resp.setContentType("application/octet-stream"); resp.setHeader("Content-disposition", "attachment;filename=" + fileName); // 对大文件进行下载 StreamUtils.copy(responseEntity.getBody(), resp.getOutputStream()); log.info("下载文件结束,文件名称:{},路径:{}", fileName, keyCode);}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。