[JAVA] Das zu RestTemplate hinzugefügte patchForObject kann nicht effektiv verwendet werden, wenn es sich um eine Standardimplementierung handelt (die HttpURLConnection verwendet).

Ab Spring Framework 4.3.5 wurde die Methode "patchForObject" (Methode für die HTTP-Kommunikation mit der PATCH-Methode) zur "RestTemplate" hinzugefügt. Wenn Sie jedoch die "RestTemplate" im Standardzustand verwenden, tritt während der Kommunikationsverarbeitung ein Fehler auf. Ich werde: Sweat_smile: Dies liegt daran, dass die im Standardstatus verwendete Klasse die JDK-Standard-API "java.net.HttpURLConnection" ist. Wie einige von Ihnen vielleicht wissen, unterstützt HttpURLConnection die PATCH-Methode nicht ...

Was ist, wenn ich PATCH verwende?

Verwenden Sie eine OSS-Bibliothek, die die PATCH-Methode unterstützt! !!

Das Spring Framework unterstützt die folgenden OSS-Bibliotheken.

Alle oben genannten Bibliotheken unterstützen die PATCH-Methode.

Wie benutzt man die OSS-Bibliothek?

Die folgenden Schritte sind erforderlich.

  1. Als abhängige Bibliothek zu pom.xml usw. hinzufügen.
  2. Fügen Sie die Implementierungsklasse von "ClientHttpRequestFactory", die der OSS-Bibliothek entspricht, in "RestTemplate" ein

Beispiel für eine ClientHttpRequestFactory-Injektion


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

Note:

Wenn Sie RestTemplate für Spring Boot 1.4+ verwenden möchten, lesen Sie bitte "RestTemplate (HTTP-Client) für Spring Boot 1.4+ verwenden"! !! Durch Generieren einer "RestTemplate" mit dem in Spring 1.4 hinzugefügten "RestTemplateBuilder" wird Schritt 2 oben automatisch gelöst.

Implementierungsklasse von ClientHttpRequestFactory, bereitgestellt von Spring Framework

Spring Framework bietet die folgenden Implementierungsklassen.

Name der Klasse Erläuterung
HttpComponentsClientHttpRequestFactory Apache HttpComponents Implementierungsklasse für die HTTP-Kommunikation mit HttpClient
OkHttp3ClientHttpRequestFactory Implementierungsklasse für die HTTP-Kommunikation mit OkHttp 3
OkHttpClientHttpRequestFactory Implementierungsklasse für die HTTP-Kommunikation mit OkHttp 2
Netty4ClientHttpRequestFactory Implementierungsklasse für die HTTP-Kommunikation mit Netty 4
SimpleClientHttpRequestFactory JDKHttpURLConnectionImplementierungsklasse für die HTTP-Kommunikation mit (Standardimplementierung)

Zusammenfassung

Wenn Sie mit der PATCH-Methode auf die REST-API (Web-API) zugreifen müssen ... Verwenden Sie die OSS-Bibliothek für die HTTP-Kommunikation! !!

Recommended Posts

Das zu RestTemplate hinzugefügte patchForObject kann nicht effektiv verwendet werden, wenn es sich um eine Standardimplementierung handelt (die HttpURLConnection verwendet).
Das Ende der katastrophalen Programmierung # 03 "Der Vergleich von ganzen Zahlen, wenn" a> b ", nimmt an, dass es" a - b> 0 "ist."
Was tun, wenn der Befehl adb nicht ausgeführt werden kann?
Was ist mit dem Fehler "Kann nicht gelesen werden oder ist keine gültige ZIP-Datei?" Zu tun