范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

RESTClients通过RestTemplate访问Web资源

  Spring Boot 中的 RestTemplate
  简述:Spring Boot 中没有⾃动配置 RestTemplateSpring Boot 提供了 RestTemplateBuilderRestTemplateBuilder.build()
  常⽤⽅法GET 请求getForObject() / getForEntity()POST 请求postForObject() / postForEntity()PUT 请求put()DELETE 请求delete()
  构造 URI构造 URIUriComponentsBuilder构造相对于当前请求的 URIServletUriComponentsBuilder构造指向 Controller 的 URIMvcUriComponentsBuilder
  RestTemplate
  官网地址:https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#webmvc-client
  RestTemplate是执行HTTP请求的同步客户端。它是原始的Spring REST客户端,并在底层HTTP客户端库上公开了一个简单的模板方法API。
  从5.0开始,RestTemplate处于维护模式,只接受少量的更改请求和bug。请考虑使用    WebClient,它提供了更现代的API并支持同步、异步和流场景。
  可参阅 REST Endpoints  了解详细信息。
  RestTemplate在HTTP客户端库上提供了更高级别的API。它使在单行中调用 REST endpoints变得容易。它公开了以下几组重载方法:
  Method group
  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。注意,JDK HttpURLConnection不支持PATCH,但Apache HttpComponents和其他组件支持。
  delete
  使用DELETE方法删除指定URI处的资源。
  optionsForAllow
  使用ALLOW方法检索资源允许调用的HTTP方法
  exchange
  在需要时能够提供额外灵活性,比前面的方法更一般化(且不那么自以为是)的版本。它接受一个RequestEntity(包括HTTP方法、URL、报头和主体作为输入)并返回一个ResponseEntity。
  这些方法允许使用ParameterizedTypeReference而不是Class来指定具有泛型的响应类型。
  execute
  执行请求的最通用方法,通过回调接口完全控制请求准备和响应提取。  Initialization
  默认构造函数使用java.net.HttpURLConnection执行请求 。 您可以切换到具有ClientHttpRequestFactory实现的不同HTTP库  。内置支持以下功能: Apache HttpComponents Netty OkHttp
  例如,要切换到Apache HttpComponents,可以使用以下代码:
  RestTemplate template = new  RestTemplate(new  HttpComponentsClientHttpRequestFactory());
  每个ClientHttpRequestFactory公开特定于底层HTTP客户端库的配置选项——例如:连接池或其他细节。
  注意,在访问表示错误(例如401)的响应状态时,java.net对HTTP请求的实现可能会引发异常。如果这是一个问题,请切换到另一个HTTP客户端库。 URIs
  许多RestTemplate方法接受URI模板和URI模板变量,要么作为String变量参数,要么作为Map。
  下面的例子使用了String变量参数: String result = restTemplate.getForObject(         "https://example.com/hotels/{hotel}/bookings/{booking}", String.class, "42", "21");
  下面的例子使用Map: Map vars = Collections.singletonMap("hotel", "42");  String result = restTemplate.getForObject(         "https://example.com/hotels/{hotel}/rooms/{hotel}", String.class, vars);
  请记住 URI模板是自动编码的  ,如下例所示: restTemplate.getForObject("https://example.com/hotel list", String.class);  // Results in request to "https://example.com/hotel%20list"
  可以使用RestTemplate的uriTemplateHandler属性来自定义uri的编码方式。或者,可以准备一个java.net.URI,并将它传递到一个能够接受URI的RestTemplate方法。
  有关使用和编码URI的更多细节,请参见  URI LinksHeaders
  可以使用exchange()方法来指定请求头,如下例所示: String uriTemplate = "https://example.com/hotels/{hotel}"; URI uri = UriComponentsBuilder.fromUriString(uriTemplate).build(42);  RequestEntity requestEntity = RequestEntity.get(uri)         .header("MyRequestHeader", "MyValue")         .build();  ResponseEntity response = template.exchange(requestEntity, String.class);  String responseHeader = response.getHeaders().getFirst("MyResponseHeader"); String body = response.getBody();
  可以通过诸多返回ResponseEntity的RestTemplate方法变体获得响应头。 Body
  传入RestTemplate方法和从RestTemplate方法返回的对象与原始内容进行转换是通过HttpMessageConverter实现的。
  在POST中,输入对象被序列化到请求体中,如下例所示: URI location = template.postForLocation("https://example.com/people", person);
  一般来说,不需要显式地设置请求的Content-Type头。在大多数情况下,可以根据源Object类型找到一个适配的MessageConverter,所选的消息转换器也会设置对应的Content-Type。如果有必要,可以使用 exchange方法显式提供Content-Type请求头,而这又会影响选择什么消息转换器。
  在GET中,响应体被反序列化为 Object,如下例所示: Person person = restTemplate.getForObject("https://example.com/people/{id}", Person.class, 42);
  一般来说,请求的Accept头也不需要显式设置。在大多数情况下,可以根据预期的响应类型找到兼容的MessageConverter,它会填充Accept请求头。如果需要,可以使用 exchange方法显式地提供Accept头。
  默认情况下,RestTemplate根据类路径检索并注册所有内置的     message converters ,类路径检索也有助于确定存在哪些可选的转换库。也可以显示的设置要使用的消息转换器。  Message Conversion
  spring-web模块包含HttpMessageConverter,用于通过InputStream和OutputStream读取和写入HTTP请求体和响应体。HttpMessageConverter实例克用于客户端(例如,RestTemplate)和服务器端(例如,Spring MVC REST  controllers)。
  框架中提供了主要的媒体(MIME)类型的具体实现,默认情况下,会注册到客户端的RestTemplate和服务器端的RequestMappingHandlerAdapter(可参阅 Configuring Message Converters)。
  下面几节将描述HttpMessageConverter的实现。对于所有 converters,都会使用默认的媒体类型,但是可以通过设置supportedMediaTypes  bean属性来覆盖它。下表描述了每个实现:
  MessageConverter
  Description
  StringHttpMessageConverter
  一个HttpMessageConverter实现,可以从HTTP请求和响应中读写String实例。默认情况下,该转换器支持所有文本媒体类型(text/*),并使用text/plain的Content-Type进行写入。
  FormHttpMessageConverter
  可以从HTTP请求和响应读取和写入表单数据的HttpMessageConverter实现。默认情况下,该转换器读取和写入application/x-www-form-urlencoded媒体类型。从MultiValueMap中读取和写入表单数据。转换器也可以写入(但不能读取)从MultiValueMap中读取的  multipart data 。默认情况下,支持multipart/form-data。从Spring Framework 5.2开始,可以支持额外的  multipart subtypes 来写入表单数据。更多细节可参考FormHttpMessageConverter的javadoc。
  ByteArrayHttpMessageConverter
  一个HttpMessageConverter实现,可以从HTTP请求和响应中读写字节数组。默认情况下,该转换器支持所有媒体类型(*/*),并使用 application/octet-stream 的 Content-Type进行写入。可以通过设置supportedMediaTypes属性并重写getContentType(byte[])方法来覆盖它。
  MarshallingHttpMessageConverter
  一个HttpMessageConverter实现,它可以通过使用org.springframework.oxm包中的Spring的Marshaller和Unmarshaller抽象来读写XML。该转换器在使用之前需要一个Marshaller和Unmarshaller。可以通过构造器或bean属性来注入。默认情况下,该转换器支持text/xml和application/xml。
  MappingJackson2HttpMessageConverter
  一个HttpMessageConverter实现,可以通过使用Jackson的ObjectMapper来读写JSON。可以通过使用Jackson提供的注解按需定制JSON映射。当需要进一步控制时(对于需要为特定类型提供自定义JSON序列化器/反序列化器的情况),可以通过ObjectMapper属性注入自定义ObjectMapper。默认情况下,该转换器支持application/json。
  MappingJackson2XmlHttpMessageConverter
  一个HttpMessageConverter实现,它可以通过使用  Jackson XML 扩展的XmlMapper来读写XML。您可以根据需要通过使用JAXB或Jackson提供的注解自定义XML映射。当需要进一步控制时(对于需要为特定类型提供自定义XML序列化器/反序列化器的情况),可以通过ObjectMapper属性注入自定义XmlMapper。默认情况下,该转换器支持application/xml。
  SourceHttpMessageConverter
  一个可以从HTTP请求和响应读写javax.xml.transform.Source的HttpMessageConverter实现。只支持DOMSource、SAXSource和StreamSource。默认情况下,该转换器支持text/xml和application/xml。
  BufferedImageHttpMessageConverter
  一个HttpMessageConverter实现,可以从HTTP请求和响应中读写java.awt.image.BufferedImage。该转换器读写Java I/O API支持的媒体类型。  Jackson JSON Views
  你可以指定   Jackson JSON View  来序列化对象属性的一个子集,如下例所示: MappingJacksonValue value = new MappingJacksonValue(new User("eric", "7!jd#h23")); value.setSerializationView(User.WithoutPasswordView.class);  RequestEntity requestEntity =     RequestEntity.post(new URI("https://example.com/user")).body(value);  ResponseEntity response = template.exchange(requestEntity, String.class);Multipart
  要发送 multipart data,需要提供 MultiValueMap,其值可能是部分内容的Object,文件部分的Resource,或带有头的部分内容的HttpEntity。例如: MultiValueMap parts = new LinkedMultiValueMap<>();  parts.add("fieldPart", "fieldValue"); parts.add("filePart", new FileSystemResource("...logo.png")); parts.add("jsonPart", new Person("Jason"));  HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_XML); parts.add("xmlPart", new HttpEntity<>(myBean, headers));
  在大多数情况下,不必为每个部分指定Content-Type。内容类型可以根据选择序列化它的HttpMessageConverter自动确定;在 Resource 的情况下可以根据文件扩展名确定。如果需要,可以显式地用HttpEntity  wrapper提供MediaType。
  一旦MultiValueMap准备好了,你可以将它传递给RestTemplate,如下所示: MultiValueMap parts = ...; template.postForObject("https://example.com/upload", parts, Void.class);
  如果MultiValueMap包含至少一个非 String值,则内容类型被FormHttpMessageConverter设置为multipart/form-data。如果MultiValueMap仅有 String值,则Content-Type默认为application/x-www-form-urlencoded。如果需要,还可以显式地设置Content-Type。 REST endpoints
  Spring框架为调用 REST endpoints提供了两种选择: RestTemplate:  带有同步、模板方法API的原始Spring REST客户端。WebClient:  一个支持同步和异步以及流场景的非阻塞的、响应式的替代方案。

大好河山醉美边境!建设好家乡守护好边疆!暖阳沐浴着白雪白雪像在装睡的样子舒服得都不想化了耸入云端的那些山峰依旧银装素裹一副高冷的样子让人顿觉高攀不起夕阳下的风雪丫口执勤点天空中轻流涌动云卷云舒徐徐书写着蓝色画卷绿水青山间(第一研究)献礼两会宋元400年间重庆教育中心在江津(二)宋元400年间重庆教育中心在江津(二)江津教育强区的历史文化支撑作者谭云籍谭蘅君作者按本部分内容主要从宋代恭州(重庆府)内进行对比,恭州(重庆府)有三县巴县江津璧山。从教育视域看,古天乐变脸,陈浩民打针,刘晓庆耳垂变形,老戏骨都别整了各大专业表演院校在对外招生时明确表示不会收整过容的学生,而一些大牌导演像张艺谋,冯小刚等人也曾多次表示挑选演员的首要要求就是纯天然。行业标准的树立,使得很多的新人演员放弃了整容的念3米高巨型兔,杭州又新增一网红打卡地还有几天就是春节,在许多城市的角落都能看到各种兔子形象,装扮得喜气洋洋,恭贺新一年的到来。最近一段时间,杭州又有一只兔子晋升为兔子界的网红,吸引着市民和游客前来打卡。据悉,这只兔子18天播放量破21亿,拿下13个冠军,刘亦菲又抓到了一张王牌2023年一开年,王炸大剧确实太多了。比如张译,张颂文的狂飙,那真的是上线就成了超级大爆款,还有于和伟,张鲁一的三体,更是让人每天追剧追的欲罢不能!本以为2023年开年,有这两部好小红书上的网红P图,毁了多少刘亦菲?发福,发腮,仪态不好,笑起来牙齿不好看,天仙变天蓬你很难想象,以上的这些形容,有一天竟然也会出现在人称仙女姐姐的刘亦菲身上。毕竟就在前不久,刘亦菲还凭借着一部梦华录火爆了全网,当时跪求央视春晚不要重复我想死你们了后天,过年。明天,除夕。欢欢喜喜过大年,阖家团圆享年味。除夕的央视春晚,无论你喜欢不喜欢,爱看不爱看,都已算上全国人民共享了四十年的精神文化年味大餐。正当我努力做好妻子的下手,家里气质不硬,就别再尬演军人了,这5位男星演军人,看着真让人难受老话说得好没有金刚钻,别揽瓷器活。明明自身的实力不足,偏偏还要生硬的挑战,最终尴尬的只有自己。比如影视圈中的军人一角,这5位明星的演技真的是让人尴尬到脚指头抠出一栋别墅。如坐针毡如金铲铲之战千分王者冷门偷分思路!高爱心,高伤害,把把前二大家好,我是小嗨。本期为大家带来的是新赛季上分阵容灵能娑娜阵容组成安妮娑娜乐芙兰阿利斯塔索拉卡悠米迦娜索拉卡阵容羁绊4灵能4爱心2AI2吉祥物2福牛1平民1气象主播转职推荐灵能纹章RTX4080公版卡9499元现货销售目前在京东自营上面,RTX4080创始人版显卡(公版卡)9499元现货销售,有意购置新一代公版N卡的用户们不容错过。RTX4080是目前新一代RTX40系列显卡的次旗舰,它采用的是过年啦,过年啦!全家一起围炉烤火看春晚啦!大家好,我是Angel,今天给大家带来一款老牌经典的免费智能电视直播软件91看电视!(电视端)这款直播其实已经存在很久了,一直是正常运营的,并且一直专注于无广纯净直播体验。非常可靠
(国际)土耳其千年古堡遭地震损毁据当地媒体报道,土耳其东南部加济安泰普省的加济安泰普古堡在6日发生的地震中严重损毁,城堡的东侧南侧和东南侧堡体在地震中坍塌,残垣断壁滑落到古堡所在山坡下的道路上。根据考古研究,加济(国际)老挝加紧为中国游客到来做准备随着中国不断优化疫情防控政策,有序恢复公民出境旅游,老挝政府和旅游业正加紧改善旅游设施,提升服务水平,为预期中的大批中国游客到来做好准备。2月7日,游客在老挝首都万象凯旋门附近留影万般皆是命,半点不由人吗01hr每个人一生中,都有他来到这世间的使命和缘由。人一生下来,和谁结婚,生几个孩子,干什么事业,遇到谁,所有的大事,早有安排。所以,你是什么命,其实早已注定。不管你信不信命,愿不刀郎的前妻杨娜生下女儿40天便跑路,32年过去了,她可曾后悔过2004年,一首2002年的第一场雪脱颖而出。刀郎性感的烟嗓诉尽了人世的沧桑,叫人沉浸在那大雪纷飞的漫漫寒夜之中。他的歌里没有城市的浮躁与喧嚣,而是充满了天圆地方的广阔与豪迈。该专金星和妻子结婚10年,离婚时已是女儿身,再婚后被丈夫宠成宝人不犯我,我不犯人人若犯我,礼让三分人再犯我,斩草除根。金星在节目中说的话,众网友不禁感叹听她说话也太过瘾了她的三观真是太正了。不仅如此,她还说不要怪姐狠,姐对自己更狠。当了解她之身高晚长的孩子,有3个显著特点,没有的孩子就不要多想了在我国这个内卷时代,孩子的身高也是家长之间暗中较劲的对象之一。较劲较赢了还好,较输了的脸上没面子,却总拿我孩子晚长,将来肯定会更高的!来安慰自己。那孩子到底是不是晚长,它是有规律和夜光杯打包旧事打包这个词,现在已经是常用语了。但是对我来说,第一次看到了解到打包的含义,是在一个特殊的场合特殊的环境下感受和体会到的,从此,终身受益。上世纪80年代中叶,锦江集团和东湖集团先后新说了多少遍,沙茶汤底不卖在深圳,正宗的沙茶面不多了我们家,只卖沙茶面这次来到了一家位于横岗的面馆,它家从开店以来就只卖厦门沙茶面。沙茶面,是福建厦门当地一种有名的小吃。它里面用到的沙茶,是由多种香料熬制而因违规使用涉毒演员,热门电视剧狂飙恐遭永久下架禁播!由徐纪周执导,张译张颂文主演的电视剧狂飙自开播以来,剧中的人物例如高启强高启盛李有田徐江等等,大结局更是让很多人至今没有走出来,都在网上掀起了一阵模范,可以说狂飙是近几年来热度最高生殖崇拜这种畸形之风,正在野蛮生长!去污粉前言去污粉娱乐圈一向都是潮流风向标,对青少年的影响,远比书本,学校教育来的干脆来的直接。如今有一个非常不好的现象生殖崇拜正在荼毒少年,野蛮成长。今天跟大家聊聊生殖崇拜,让更多孩子个子矮,要不要注射生长激素?怎么注射?赖杰琦核心提示当下,家长越来越重视自己孩子的身高。一是觉得身高关系到颜值,二是认为身高可能会让孩子以后就业能有更多选择。在此情况下,咨询使用生长激素的家长也随之增多。到底什么情况属