1. Tri problème:
Exception: org.springframework.web.httprequestMethodNotsupporTedException: la méthode de demande 'Post' Non pris en charge
Il est évident que lorsque Feign exécute enfin la demande HTTP, cette méthode est considérée comme POST, mais le client Feign définit requestMethod.get ou @getMapping, ce qui provoque une erreur.
Alors pourquoi Feign pense-t-il que cette méthode est publiée?
Suivi du code source:
1. Regardons l'annotation FeignClient comme entrée:
2. Selon le style cohérent de Spring Cloud, nous ouvrons la classe FeignAutoConfiguration pour voir la logique de configuration:
Regardez l'annotation dans la boîte rouge de l'image ci-dessus: cette classe est déclenchée lorsqu'il n'y a pas d'iloadbalancer. Notre projet a activé le ruban, il doit donc exister. Regardez à nouveau les commentaires: les clients du ruban équilibrant le chargement doivent utiliser FeignRibBonClientAutoConfiguration pour configurer cette classe. aller ~
Comme indiqué dans l'image ci-dessus, regardez les commentaires de la boîte rouge: dans l'ordre d'importation de haut en bas: httpclientFeignloadBalancedConfiguration> okhttpfeignloadBalancedConfiguration> DefaultFeignLoDBalancedConfiguration, l'outil Http sous-jacent correspondant: HttppClient> OKHTTP> Httpurlconnection
Selon la définition du protocole HTTP, @ requestbody + requestMethod.get est prise en charge. Cela dépend donc des différentes implémentations de la boîte à outils. En vérifiant le code source, j'ai constaté que OKHTTP et HTTPURLConnection ne sont pas pris en charge (signalé une erreur), seul HTTPPClient le prend en charge. (La HttpurlConnection par défaut rapportera une erreur)
Nous savons que seul HttpClient prend en charge @ requestbody + requestMethod.get, nous devons donc remplir les conditions et aller à HttpClientFeignLoDBalancedConfiguration. Consultez le code source:
On peut voir que la classe apachehttpclient existe sous le chemin de classe. Ajoutons le pom:
<dependency> <proupId> io.github.openfeign </rompupId> <Artifactid> feign-httpclient </refactive> </dpendance>
Enfin, le package Feign-HttpClient-9.5.0.jar a été chargé, et il s'est ouvert et a constaté qu'il y avait apachehttpclient.class. Cliquez et voyez qu'il s'agissait en fait d'un HTTPPClient.
Par conséquent, le pom introduit feign-httpclient -》 apachehttpclient.class -》 allez sur httpclientfeignloadBalancedConfiguration -》 Lorsque vous demandez, httpclient -》 support @ requestbody + requestMethod.get
2. Solution:
Introduit dans pom
<dependency> <proupId> io.github.openfeign </rompupId> <Artifactid> feign-httpclient </refactive> </dpendance>
Une fois Maven mis à jour, vérifiez si le package Feign-HttpClient-9.5.0.jar existe dans le projet.
Résumer
Ce qui précède est la solution au Cloud Spring Feign que l'éditeur vous a présenté. La solution à l'erreur de Spring Cloud Feign ne prend pas en charge @ requestbody + requestMethod.get. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!