`RestTemplate`
初始化
URI标头 消息体消息转换Jackson视图
RestTemplate它RestTemplate通过 HTTP 客户端库提供了更高级别的 API。它使在一行中调用 REST 端点变得容易。
初始化默认构造函数用于java.net.HttpURLConnection执行请求。您可以切换到具有ClientHttpRequestFactory. 有对以下内容的内置支持:
Apache HttpComponents网状OkHttp
例如,要切换到 Apache HttpComponents,您可以使用以下命令:
RestTemplate template = new RestTemplate(new HttpComponentsClientHttpRequestFactory());URI
许多RestTemplate方法接受 URI 模板和 URI 模板变量,或者作为String变量参数,或者作为Map
以下示例使用String变量参数:
String result = restTemplate.getForObject( "https://example.com/hotels/{hotel}/bookings/{booking}", String.class, "42", "21");
以下示例使用Map
Mapvars = 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"
您可以使用 的uriTemplateHandler属性来自RestTemplate定义 URI 的编码方式。或者,您可以准备 java.net.URI并将其传递给RestTemplate接受 a 的方法之一URI。
标头您可以使用这些exchange()方法来指定请求标头,如以下示例所示:
String uriTemplate = "https://example.com/hotels/{hotel}"; URI uri = UriComponentsBuilder.fromUriString(uriTemplate).build(42); RequestEntityrequestEntity = RequestEntity.get(uri) .header("MyRequestHeader", "MyValue") .build(); ResponseEntity response = template.exchange(requestEntity, String.class); String responseHeader = response.getHeaders().getFirst("MyResponseHeader"); String body = response.getBody();
您可以通过许多RestTemplate返回 ResponseEntity.
消息体传递给方法和从RestTemplate方法返回的对象在HttpMessageConverter.
在 POST 上,输入对象被序列化为请求正文,如以下示例所示:
URI location = template.postForLocation("https://example.com/people", person);
您无需显式设置请求的 Content-Type 标头。在大多数情况下,您可以根据源Object类型找到兼容的消息转换器,并且选择的消息转换器会相应地设置内容类型。如有必要,您可以使用这些 exchange方法显式提供Content-Type请求标头,这反过来会影响选择的消息转换器。
在 GET 上,响应的主体被反序列化为 output Object,如以下示例所示:
Person person = restTemplate.getForObject("https://example.com/people/{id}", Person.class, 42);
请求的Accept标头不需要显式设置。在大多数情况下,可以根据预期的响应类型找到兼容的消息转换器,然后有助于填充Accept标头。如有必要,您可以使用这些exchange 方法显式提供Accept标头。
默认情况下,RestTemplate注册所有内置 消息转换器,具体取决于有助于确定存在哪些可选转换库的类路径检查。您还可以将消息转换器设置为显式使用。
消息转换该spring-web模块包含通过和HttpMessageConverter读取和写入 HTTP 请求和响应正文的合同。 实例用于客户端和服务器端
框架中提供了主要媒体 (MIME) 类型的具体实现,默认情况下,RestTemplate在客户端和 RequestMethodHandlerAdapter服务器端注册。
的实现HttpMessageConverter将在以下部分中描述。对于所有转换器,都使用默认媒体类型,但您可以通过设置 supportedMediaTypesbean 属性来覆盖它。下表描述了每个实现:
Jackson视图您可以指定Jackson JSON 视图 以仅序列化对象属性的子集,如以下示例所示:
MappingJacksonValue value = new MappingJacksonValue(new User("eric", "7!jd#h23")); value.setSerializationView(User.WithoutPasswordView.class); RequestEntityrequestEntity = RequestEntity.post(new URI("https://example.com/user")).body(value); ResponseEntity response = template.exchange(requestEntity, String.class);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)