应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

RESTClients通过RestTemplate访问Web

  SpringBoot中的RestTemplate
  简述:SpringBoot中没有动配置RestTemplateSpringBoot提供了RestTemplateBuilderRestTemplateBuilder。build()
  常法GET请求getForObject()getForEntity()POST请求postForObject()postForEntity()PUT请求put()DELETE请求delete()
  构造URI构造URIUriComponentsBuilder构造相对于当前请求的URIServletUriComponentsBuilder构造指向Controller的URIMvcUriComponentsBuilder
  RestTemplate
  官网地址:https:docs。spring。iospringframeworkdocscurrentreferencehtmlweb。htmlwebmvcclient
  RestTemplate是执行HTTP请求的同步客户端。它是原始的SpringREST客户端,并在底层HTTP客户端库上公开了一个简单的模板方法API。
  从5。0开始,RestTemplate处于维护模式,只接受少量的更改请求和bug。请考虑使用WebClient,它提供了更现代的API并支持同步、异步和流场景。
  可参阅RESTEndpoints了解详细信息。
  RestTemplate在HTTP客户端库上提供了更高级别的API。它使在单行中调用RESTendpoints变得容易。它公开了以下几组重载方法:
  Methodgroup
  Description
  getForObject
  通过使用GET方法得到一个响应体的Object
  getForEntity
  通过使用GET方法得到一个ResponseEntity(包括status,headers,body)。
  headForHeaders
  通过使用HEAD方法得到资源的所有headers。
  postForLocation
  通过使用POST方法创建一个新资源,并从返回响应中的Location头。
  postForObject
  使用POST方法创建新资源,并返回响应体的Object。
  postForEntity
  使用POST方法创建新资源,并返回响应的ResponseEntity。
  put
  通过使用PUT方法创建或更新资源。
  patchForObject
  使用PATCH方法更新资源,并返回响应体的Object。注意,JDKHttpURLConnection不支持PATCH,但ApacheHttpComponents和其他组件支持。
  delete
  使用DELETE方法删除指定URI处的资源。
  optionsForAllow
  使用ALLOW方法检索资源允许调用的HTTP方法
  exchange
  在需要时能够提供额外灵活性,比前面的方法更一般化(且不那么自以为是)的版本。它接受一个RequestEntity(包括HTTP方法、URL、报头和主体作为输入)并返回一个ResponseEntity。
  这些方法允许使用ParameterizedTypeReference而不是Class来指定具有泛型的响应类型。
  execute
  执行请求的最通用方法,通过回调接口完全控制请求准备和响应提取。Initialization
  默认构造函数使用java。net。HttpURLConnection执行请求。您可以切换到具有ClientHttpRequestFactory实现的不同HTTP库。内置支持以下功能:ApacheHttpComponentsNettyOkHttp
  例如,要切换到ApacheHttpComponents,可以使用以下代码:
  RestTemplatetemplatenewRestTemplate(newHttpComponentsClientHttpRequestFactory());
  每个ClientHttpRequestFactory公开特定于底层HTTP客户端库的配置选项例如:连接池或其他细节。
  注意,在访问表示错误(例如401)的响应状态时,java。net对HTTP请求的实现可能会引发异常。如果这是一个问题,请切换到另一个HTTP客户端库。URIs
  许多RestTemplate方法接受URI模板和URI模板变量,要么作为String变量参数,要么作为MapString,String。
  下面的例子使用了String变量参数:StringresultrestTemplate。getForObject(https:example。comhotels{hotel}bookings{booking},String。class,42,21);
  下面的例子使用MapString,String:MapString,StringvarsCollections。singletonMap(hotel,42);StringresultrestTemplate。getForObject(https:example。comhotels{hotel}rooms{hotel},String。class,vars);
  请记住URI模板是自动编码的,如下例所示:restTemplate。getForObject(https:example。comhotellist,String。class);Resultsinrequesttohttps:example。comhotel20list
  可以使用RestTemplate的uriTemplateHandler属性来自定义uri的编码方式。或者,可以准备一个java。net。URI,并将它传递到一个能够接受URI的RestTemplate方法。
  有关使用和编码URI的更多细节,请参见URILinksHeaders
  可以使用exchange()方法来指定请求头,如下例所示:StringuriTemplatehttps:example。comhotels{hotel};URIuriUriComponentsBuilder。fromUriString(uriTemplate)。build(42);RequestEntityVoidrequestEntityRequestEntity。get(uri)。header(MyRequestHeader,MyValue)。build();ResponseEntityStringresponsetemplate。exchange(requestEntity,String。class);StringresponseHeaderresponse。getHeaders()。getFirst(MyResponseHeader);Stringbodyresponse。getBody();
  可以通过诸多返回ResponseEntity的RestTemplate方法变体获得响应头。Body
  传入RestTemplate方法和从RestTemplate方法返回的对象与原始内容进行转换是通过HttpMessageConverter实现的。
  在POST中,输入对象被序列化到请求体中,如下例所示:URIlocationtemplate。postForLocation(https:example。compeople,person);
  一般来说,不需要显式地设置请求的ContentType头。在大多数情况下,可以根据源Object类型找到一个适配的MessageConverter,所选的消息转换器也会设置对应的ContentType。如果有必要,可以使用exchange方法显式提供ContentType请求头,而这又会影响选择什么消息转换器。
  在GET中,响应体被反序列化为Object,如下例所示:PersonpersonrestTemplate。getForObject(https:example。compeople{id},Person。class,42);
  一般来说,请求的Accept头也不需要显式设置。在大多数情况下,可以根据预期的响应类型找到兼容的MessageConverter,它会填充Accept请求头。如果需要,可以使用exchange方法显式地提供Accept头。
  默认情况下,RestTemplate根据类路径检索并注册所有内置的messageconverters,类路径检索也有助于确定存在哪些可选的转换库。也可以显示的设置要使用的消息转换器。MessageConversion
  springweb模块包含HttpMessageConverter,用于通过InputStream和OutputStream读取和写入HTTP请求体和响应体。HttpMessageConverter实例克用于客户端(例如,RestTemplate)和服务器端(例如,SpringMVCRESTcontrollers)。
  框架中提供了主要的媒体(MIME)类型的具体实现,默认情况下,会注册到客户端的RestTemplate和服务器端的RequestMappingHandlerAdapter(可参阅ConfiguringMessageConverters)。
  下面几节将描述HttpMessageConverter的实现。对于所有converters,都会使用默认的媒体类型,但是可以通过设置supportedMediaTypesbean属性来覆盖它。下表描述了每个实现:
  MessageConverter
  Description
  StringHttpMessageConverter
  一个HttpMessageConverter实现,可以从HTTP请求和响应中读写String实例。默认情况下,该转换器支持所有文本媒体类型(text),并使用textplain的ContentType进行写入。
  FormHttpMessageConverter
  可以从HTTP请求和响应读取和写入表单数据的HttpMessageConverter实现。默认情况下,该转换器读取和写入applicationxwwwformurlencoded媒体类型。从MultiValueMapString,String中读取和写入表单数据。转换器也可以写入(但不能读取)从MultiValueMapString,Object中读取的multipartdata。默认情况下,支持multipartformdata。从SpringFramework5。2开始,可以支持额外的multipartsubtypes来写入表单数据。更多细节可参考FormHttpMessageConverter的javadoc。
  ByteArrayHttpMessageConverter
  一个HttpMessageConverter实现,可以从HTTP请求和响应中读写字节数组。默认情况下,该转换器支持所有媒体类型(),并使用applicationoctetstream的ContentType进行写入。可以通过设置supportedMediaTypes属性并重写getContentType(byte〔〕)方法来覆盖它。
  MarshallingHttpMessageConverter
  一个HttpMessageConverter实现,它可以通过使用org。springframework。oxm包中的Spring的Marshaller和Unmarshaller抽象来读写XML。该转换器在使用之前需要一个Marshaller和Unmarshaller。可以通过构造器或bean属性来注入。默认情况下,该转换器支持textxml和applicationxml。
  MappingJackson2HttpMessageConverter
  一个HttpMessageConverter实现,可以通过使用Jackson的ObjectMapper来读写JSON。可以通过使用Jackson提供的注解按需定制JSON映射。当需要进一步控制时(对于需要为特定类型提供自定义JSON序列化器反序列化器的情况),可以通过ObjectMapper属性注入自定义ObjectMapper。默认情况下,该转换器支持applicationjson。
  MappingJackson2XmlHttpMessageConverter
  一个HttpMessageConverter实现,它可以通过使用JacksonXML扩展的XmlMapper来读写XML。您可以根据需要通过使用JAXB或Jackson提供的注解自定义XML映射。当需要进一步控制时(对于需要为特定类型提供自定义XML序列化器反序列化器的情况),可以通过ObjectMapper属性注入自定义XmlMapper。默认情况下,该转换器支持applicationxml。
  SourceHttpMessageConverter
  一个可以从HTTP请求和响应读写javax。xml。transform。Source的HttpMessageConverter实现。只支持DOMSource、SAXSource和StreamSource。默认情况下,该转换器支持textxml和applicationxml。
  BufferedImageHttpMessageConverter
  一个HttpMessageConverter实现,可以从HTTP请求和响应中读写java。awt。image。BufferedImage。该转换器读写JavaIOAPI支持的媒体类型。JacksonJSONViews
  你可以指定JacksonJSONView来序列化对象属性的一个子集,如下例所示:MappingJacksonValuevaluenewMappingJacksonValue(newUser(eric,7!jdh23));value。setSerializationView(User。WithoutPasswordView。class);RequestEntityMappingJacksonValuerequestEntityRequestEntity。post(newURI(https:example。comuser))。body(value);ResponseEntityStringresponsetemplate。exchange(requestEntity,String。class);Multipart
  要发送multipartdata,需要提供MultiValueMapString,Object,其值可能是部分内容的Object,文件部分的Resource,或带有头的部分内容的HttpEntity。例如:MultiValueMapString,ObjectpartsnewLinkedMultiValueMap();parts。add(fieldPart,fieldValue);parts。add(filePart,newFileSystemResource(。。。logo。png));parts。add(jsonPart,newPerson(Jason));HttpHeadersheadersnewHttpHeaders();headers。setContentType(MediaType。APPLICATIONXML);parts。add(xmlPart,newHttpEntity(myBean,headers));
  在大多数情况下,不必为每个部分指定ContentType。内容类型可以根据选择序列化它的HttpMessageConverter自动确定;在Resource的情况下可以根据文件扩展名确定。如果需要,可以显式地用HttpEntitywrapper提供MediaType。
  一旦MultiValueMap准备好了,你可以将它传递给RestTemplate,如下所示:MultiValueMapString,Objectparts。。。;template。postForObject(https:example。comupload,parts,Void。class);
  如果MultiValueMap包含至少一个非String值,则内容类型被FormHttpMessageConverter设置为multipartformdata。如果MultiValueMap仅有String值,则ContentType默认为applicationxwwwformurlencoded。如果需要,还可以显式地设置ContentType。RESTendpoints
  Spring框架为调用RESTendpoints提供了两种选择:RestTemplate:带有同步、模板方法API的原始SpringREST客户端。WebClient:一个支持同步和异步以及流场景的非阻塞的、响应式的替代方案。

苹果如何刷机(苹果x如何强制刷机教程)市面上使用苹果品牌手机的人应该也不在少数吧,手机跟电脑其实一样,硬件不容易坏,要坏也就是软件坏,电脑系统坏了重装系统即可,手机系统坏了也需要重装系统,只不过是称呼变了而已,手机……21分钟双响,腾空庆祝!哈兰德暴力美学,22球超曼联全队10月22日,英超第13轮,曼城坐镇主场迎战布莱顿。短短21分钟,哈兰德上演梅开二度的好戏!22岁的哈兰德,如同一头野牛,用身体撞开后卫,用爆射震慑门将。英超半程19球的纪录,……如何降低噪音(有什么很好的防噪音方法)随着城市的发展,人们所拥有的房屋间面积越来越小,但噪音却越来越大,怎样才能避免不必要的声音?八个隔音妙招让你远离噪音烦恼。玄关安装两扇门。在很多老式住宅中,都安装有两扇门……前国米前锋彻底没戏了!旺达与00后拍MV,大量亲密镜头加同床北京时间10月22日,前国际米兰和巴黎圣日耳曼队前锋毛罗伊卡尔迪的妻子旺达娜拉与00后说唱歌手LGante的MV被曝光。两人在视频中饰演一对情侣,之中有两人的悲欢离合以及缠绵在……勇士队因为练兵所以输球?科尔是联盟第一主教练不是说说而已北京时间10月23日,勇士队惜败掘金队,遗憾的吃下了赛季首败,对于勇士队来说,他们是卫冕冠军,怎么轻易的输给了没有穆雷的掘金队呢?事实上,内行看门道,外行看热闹,这里面有学问的……永远不要去羡慕别人,你才是自己人生的主角图片来自于网络侵权请联系删除等过了这段新鲜感,你就会发现和你无话不说的人,才是最好的,更是最珍贵的时间对于我们来说,是最温柔的,也是最残酷的图片来自于网络侵权……如何插入水印(添加水印如何设置黑白)最近看到有些朋友分享的iphone拍摄的照片中有水印效果,估计很多小伙伴也好奇是怎么添加的吧。今天我就来详细说一下。图一这个水印的形式有通用型,比如上图的效果。也可……如何修改系统时间(手机调时间在哪里调)现在市面上有很多款水印相机,水印相机是工程、物业等行业工作的好帮手,能帮助工程、物业团队提高工作效率,并且能拍照留痕记录工作成果,是不可或缺的智能化工具之一,水印相机app宣称……比国内售价贵一倍!比亚迪欧洲车型价格公布!一款汽车产品,在国内外的定价是国人非常敏感的点。一般来说,中国本土的汽车品牌所生产的车型,成本相对更加低廉,国内售价也会相对实惠。出口到国外的车型,受关税以及运费影响,费用当然……落选秀卡鲁索28岁有冠军有大合同,2位女友都是火辣模特落选秀想在NBA取得成功,难度比想象中更大。落选球员一般不被重视,即使勉强进入联盟,也是板凳席边缘的人物,只有在有限的出场时间里证明自己,才会得到更多的机会。当今联盟也有不少优……身材配不上脸的8位女星个个美若天仙,身材却一言难尽文阅栀编辑阅栀娱乐圈的美女一抓一大把,或是清纯,或是美艳,或是性感,各式风格一应俱全。但真正的上等美女是个人气质和颜值的完美结合,这就要求她们既有完美身材,也……倒计时!篮网换帅!库里恩师取代纳什执教杜兰特NBA篮网队在这两个赛季可以说是赚足了眼球,从坐拥哈登、杜兰特和欧文的超级球队,再到杜兰特欧文闹离队丑闻传出,每一件事情都非常劲爆。图片来自网络在杜兰特官宣了新赛季……
周鹏发文疑似离队,朱芳雨拒绝顶薪续约引不满,广东王朝就此崩塌在连续拿下三座CBA总冠军奖杯之后,广东宏远未能在上赛季继续蝉联夺冠,整体阵容更加强大的辽宁男篮,从他们手中接过统治的权杖,但作为CBA历史上最伟大的球队,广东宏远依旧有着其他……马俊仁东方神鹿的缔造者,退出国家队后靠养狗成为富豪前言在中国的田径项目当中,马俊仁是一个无法召开的话题,他一手所创造出来的马家军,带领着中国田径运动,闪耀在世界舞台当中,同样也正是因为人们关注度过高的缘故,使得马家军最终……超好用的洗面奶推荐深层清洁,补水控油,细致毛孔和滋养修复超好用的洗面奶推荐:深层清洁,补水控油,细致毛孔,滋养修复不绷脸!Boscia博倩叶清透卸妆洁面啫喱是FANCL的北美线,Fancl在北美的副牌,也可称为美版fan……陈进骗国家11亿经费,让中国芯片停滞13年,出逃美国仍逍遥法芯片,一直是我国高科技企业之殇!华为,作为国内自主技术公司的代表,也会被一块小小的芯片卡在了喉咙里,只能苟延残喘。麒麟绝唱!这不仅仅是华为的问题,也是国内所有依靠芯片的高……工作流引擎发展史(Activiti主创人员的跳槽史)基于BPM有各种开源软件,以Activiti为首的Java开源工作流引擎是主要流派,基于Activiti有各种分支,比较著名有Camunda和Flowable。2002年……冲上千元市场性价比榜第一!天玑81005080mAh,降到1回看月初安兔兔公布的2022年9月千元手机性价比排行榜,排在第一名的不是一加、不是realme、不是荣耀,而是大家已经看腻的Redmi品牌,机型为RedmiNote11TPro……49岁金城武拍摄杂志封面,5年未公开露面,个人感情状态依旧成没想到,过了几年,还能看到金城武拍的杂志封面。49岁的他依旧帅气,看不出年龄,更多了成熟魅力。近日,有媒体曝光了一组金城武的最新写真照,是为杂志《ELLEMEN》拍……中国股市无人驾驶受主力资金重仓,这4家企业有望实现翻倍无人驾驶未来的发展趋势:无人驾驶汽车主要以传感器、高速芯片和GPU等重要硬件进行发展,集合了多种科技领域如现代传感、通信技术、定位导航、机器视觉捕捉及人工智能制动控制等!……刘亦菲的八卦说到刘亦菲,相信大家都非常的熟悉了吧,作为娱乐圈里公认的神仙姐姐,这么多年刘亦菲一直以清纯形象示人,就像不食人间烟火的仙女一样与世无争,一颦一笑都美的恰到好处,独特的气质成为了……长江壹号游轮介绍重庆到宜昌4天3晚游行程分享长江壹号是三峡游轮中,唯一一艘可以直接通过三峡垂直升降机的游轮,今天给大家说说长江壹号游轮怎么样,长江壹号游轮重庆至宜昌4天3晚游行程是怎么安排的。长江壹号游轮外观……美方建议在俄美国公民尽快离开,俄计划就北溪问题召开安理会会议行情回顾:周三,上证指数报3045。07点,下跌1。58,成交额2760。40亿。深证成指报10899。70点,下跌2。46,成交额3712。16亿。创业板指报2313。……NGTC直播间珠宝专家,请赐教丨市场上满绿的冰翠是翡翠吗?编者按:为全力做好疫情防控工作,严格遵守疫情防控要求,依托于互联网平台,运用智能化手段的学习、工作和生活成为人们的最佳选择。为更好地满足珠宝爱好者的学习热情,珠宝国检官网、中国……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网