第一篇:RestTemplate与开始实习生活
最近听小米蒋哥的建议,决定从今天开始记录一些工作中学习中的随笔,作为日后技术参考的积累和成长日记。第一篇随笔就先从近来开发的数据接口开始写起吧。
从7月20日入职小米以来,本人一直与工程师蒋哥和隐藏的大佬鹏鹏一起进行接口的开发。一天蒋哥忽然把我叫过去梳理需求。
“思乔,我现在要作一个跨域请求,需要你写一些中转接口帮我作中转服务器。”
我:“啊。。。”

蒋哥:“可以写一个接口,发请求到其他部门的系统,拿到数据回传给我。”
我:“好。。。”(稍微明白了一点,基本上还是懵逼中。。。)
于是蒋哥给我耐心讲了一遍获取数据回传的流程,写Json接口转发数据啊,这个俺会~

但是发送到其他系统的过程中要涉及json参数的请求和cookie的发送。我选择使用RestTemplate方式向大数据系统进行请求。
1. RestTemplate的使用
spring框架为了实现简洁的访问restful服务,所提供的一种模板类,我们可以在pom.xml文件中对RestTemplate的依赖进行添加。
配置过依赖后我们就可以在代码中使用RestTemplate类的方法了。
调用RestTemplate的类向指定url发送http请求有两种主要方法:采用getForObject(url,String)方式对url进行get请求,并返回相应的Object对象。采用exchange(url, HttpMethod.Get, entity, String.class)方法可以进行定制http的请求并返回相应的对象。
一般对于相对简单的http请求发送采用getForObjecet方法即可完成,该方法通过参数url指定将要发送的地址,通过参数String指定希望得到返回的类型,方法将响应的消息转化为该指定类型进行返回。
2. 采用exchange方法发送带有json及cookie参数的post请求
对于exchange的方法而言,方法需要传入4个参数,分别为:要访问的url地址,采用的Http访问方式,发送中携带的参数及想要接收的返回类型。json参数请求可以通过jsonObject将json进行封装传入方法中的entity进行请求,而将json请求与http请求头融合作为entity传入则需要进行方法的封装。
我们通过HttpEntity类将json请求与http请求头进行封装,HttpEntity类为http请求的实体类,我们通过HttpEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers)构造方法,将想要封装的数据传入第一个参数,用HttpHeader(内部实现为类似HashMap)类型对象的put()方法将我们要携带的网络头信息进行存放,并将其作为第二个参数传入,HttpEntity会通过内部的readOnlyHttpHeaders(HttpHeaders headers)方法对Http请求头进行创建。
3. 发送请求并处理
使用exchange(url, HttpMethod.Get, entity, String.class)方法可以完成特定方式发送请求的需求,而getBody()方法则取HttpEntity对象的body属性进行返回,在HttpEntity的源码中,将body属性用了泛型的方式,使其可以表示为任何类型的数据。而body属性在HttpEntity的构造函数中由传入的第一个参数而定,这就达到了方便开发者通过HttpEntity类型封装不同属性的数据的目的了。
4. 实习两周的感想
以往常听说在学校学的东西,搞的项目在工作中不一定用得上,还曾颇不以为然。然而真进入大的互联网公司开始工作时,确实感觉需要处理的问题更加复杂,以往常常是搭建网页过程中的增删改查,数据展示,复杂点不过增加富文本框功能,引入推送系统进行信息推送等,然而进入公司后对于需要商业应用的开发更加注重稳定性及精准性,项目的开发也从以前简单的SVN拉流推流变成了git Bash的操作及云上环境的部署,每每发布新版本的时候都会及其紧张,害怕新改的代码没改好影响前辈的使用及测试,而不再是以往在学校中网页写崩了大家哈哈一笑改改重新部署的时候了。实习的工作不停的提醒我要更加专心,更加认真的对待敲出的每行代码,改掉粗心大意的毛病更好的为公司做出贡献。
