Placement de RestTemplate

Placement de RestTemplate

RestTemplate est un module utilisé pour accéder aux services Rest dans le framework Spring. Il peut être appelé via des méthodes simples pour implémenter diverses requêtes http, notamment GET, POST, PUT, DELETE, etc. Avant d'utiliser le RestTemplate, une configuration est requise.

Ajouter une dépendance Maven

Tout d'abord, les dépendances Maven suivantes doivent être ajoutées au projet :

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web-services</artifactId>
</dependency>

Parmi eux, spring-boot-starter-web peut nous aider à configurer tous les composants requis par les applications Web, et spring-boot-starter-web-services fournit certaines extensions qui peuvent être nécessaires, telles que la conversion JSON et XML et le générateur WSDL.

Créer un bean RestTemplate

Ensuite, nous devons créer un Bean RestTemplate dans le conteneur Spring, le code est le suivant :

@Configuration
public class RestTemplateConfiguration {

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

Cette classe utilise l'annotation @Configuration pour déclarer qu'il s'agit d'une classe de configuration. Grâce à l'annotation @Bean, un bean nommé restTemplate est déclaré, qui sera injecté à l'endroit où RestTemplate doit être utilisé.

Méthodes courantes de RestTemplate

Voici quelques méthodes couramment utilisées de RestTemplate :

  • getForObject(url, responseType, uriVariables) : utilisé pour lancer une requête GET et renvoyer un objet de réponse du type spécifié. Par exemple:
String result = restTemplate.getForObject("https://www.example.com/api/users/{id}", String.class, userId);
  • postForObject(url, request, responseType, uriVariables) : utilisé pour initier une requête POST. Par exemple:
User user = new User();
// TODO:填充user对象
User createdUser = restTemplate.postForObject("https://www.example.com/api/users", user, User.class);

Modèle de repos de placement

RestTemplate prend également en charge certaines fonctionnalités avancées telles que le regroupement de connexions et l'authentification HTTP. Voici quelques options de configuration pertinentes :

@Configuration
public class RestTemplateConfiguration {

    @Bean
    public RestTemplate restTemplate() {
        // 创建连接池管理器
        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
        connectionManager.setMaxTotal(100);  // 设置最大连接数
        connectionManager.setDefaultMaxPerRoute(20);  // 设置每个路由的最大连接数

        // 配置HTTP客户端
        HttpClientBuilder clientBuilder = HttpClients.custom()
                .setConnectionManager(connectionManager)
                .disableContentCompression()  // 禁止压缩
                .setDefaultRequestConfig(requestConfig)
                .setDefaultCredentialsProvider(credentialsProvider);

        // 创建HTTP客户端工厂
        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
        requestFactory.setHttpClient(clientBuilder.build());

        // 创建RestTemplate
        RestTemplate restTemplate = new RestTemplate(requestFactory);

        // 配置HttpMessageConverter
        List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
        messageConverters.add(new MappingJackson2HttpMessageConverter());
        restTemplate.setMessageConverters(messageConverters);

        return restTemplate;
    }
}

Cette classe de configuration utilise PoolingHttpClientConnectionManager pour la gestion du pool de connexions et utilise HttpComponentsClientHttpRequestFactory comme fabrique de requêtes lors de la création de RestTemplate. Lors de la configuration de clientBuilder, la compression du corps de la réponse HTTP est désactivée et les configurations telles que le délai d'expiration de la demande et les délais de nouvelle tentative de demande sont définies à l'aide de la méthode setDefaultRequestConfig, et les informations d'authentification sont également fournies pour le client HTTP.

Ce qui précède est la configuration de base de RestTemplate, qui peut être étendue ou modifiée selon les besoins du projet.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43167662/article/details/130945443
conseillé
Classement