[JAVA] Le patchForObject ajouté à RestTemplate ne peut pas être utilisé efficacement s'il s'agit d'une implémentation par défaut (celle qui utilise HttpURLConnection).

Depuis Spring Framework 4.3.5, la méthode patchForObject (méthode de communication HTTP utilisant la méthode PATCH) a été ajoutée au RestTemplate, mais si vous utilisez le RestTemplate dans l'état par défaut, une erreur se produira pendant le traitement de la communication. Je vais: sweat_smile: En effet, la classe utilisée dans l'état par défaut est l'API standard JDK java.net.HttpURLConnection. Comme certains d'entre vous le savent peut-être, HttpURLConnection ne prend pas en charge la méthode PATCH ...

Et si j'utilise PATCH?

Utilisez une bibliothèque OSS prenant en charge la méthode PATCH! !!

Spring Framework prend en charge les bibliothèques OSS suivantes.

Toutes les bibliothèques ci-dessus prennent en charge la méthode PATCH.

Comment utiliser la bibliothèque OSS?

Les étapes suivantes sont requises.

  1. Ajouter en tant que bibliothèque dépendante à pom.xml etc.
  2. Injectez la classe d'implémentation de ClientHttpRequestFactory correspondant à la bibliothèque OSS dans RestTemplate

Exemple d'injection ClientHttpRequestFactory


@Bean
RestTemplate restTemplate() {
    HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
    return new RestTemplate(factory);
}

Note:

Si vous souhaitez utiliser RestTemplate sur Spring Boot 1.4+, voir "Utiliser RestTemplate (client HTTP) sur Spring Boot 1.4+"! !! En générant un RestTemplate en utilisant le RestTemplateBuilder ajouté dans Spring 1.4, l'étape 2 ci-dessus sera résolue automatiquement.

Classe d'implémentation de ClientHttpRequestFactory fournie par Spring Framework

Spring Framework fournit les classes d'implémentation suivantes.

nom de la classe La description
HttpComponentsClientHttpRequestFactory Classe d'implémentation Apache HttpComponents pour la communication HTTP à l'aide de HttpClient
OkHttp3ClientHttpRequestFactory Classe d'implémentation pour la communication HTTP utilisant OkHttp 3
OkHttpClientHttpRequestFactory Classe d'implémentation pour la communication HTTP utilisant OkHttp 2
Netty4ClientHttpRequestFactory Classe d'implémentation pour la communication HTTP à l'aide de Netty 4
SimpleClientHttpRequestFactory JDKHttpURLConnectionClasse d'implémentation pour la communication HTTP utilisant (implémentation par défaut)

Résumé

Si vous avez besoin d'accéder à l'API REST (API Web) en utilisant la méthode PATCH ... Utilisez la bibliothèque OSS pour la communication HTTP! !!

Recommended Posts

Le patchForObject ajouté à RestTemplate ne peut pas être utilisé efficacement s'il s'agit d'une implémentation par défaut (celle qui utilise HttpURLConnection).
La fin de la programmation catastrophique # 03 "Comparaison d'entiers, si" a> b ", supposons que c'est" a --b> 0 ""
Que faire si la commande adb ne peut pas être exécutée
Que faire à propos de l'erreur "Impossible de lire ou n'est pas un fichier ZIP valide"