1. Classificação de problemas:
Exceção: org.springframework.web.httprequestmethodnotsupportEdException: solicitar método 'post' não suportado
É óbvio que, quando Feign finalmente executa a solicitação HTTP, esse método é considerado post, mas o cliente Feign define o requestMethod.get ou @getMapping, o que causa um erro.
Então, por que Feign acha que esse método é post?
Rastreamento de código -fonte:
1. Vejamos a anotação Feignclient como a entrada:
2. De acordo com o estilo consistente da Spring Cloud, abrimos a classe Feignautoconfiguration para ver a lógica de configuração:
Veja a anotação na caixa vermelha da figura acima: esta classe é acionada quando não há iloadbalancer. Nosso projeto ativou a fita, por isso deve existir. Veja os comentários novamente: os clientes da fita de balanceamento de carga precisam usar o FeignRibBonClientAutoconfiguration para configurar esta classe. vá ~
Como mostrado na figura acima, observe os comentários da caixa vermelha: na ordem de importação de cima para baixo: httpclientfeignloadbalancedconfiguration> okhttpfeignloadbalancedconfiguration> defaultFeignloadBalancedConfiguration, a ferramenta HTTP subjacente: httppclient> okhttpl> httpl, a ferramenta httpl subjacente: httppclient> okhttpl> httpl,
De acordo com a definição do protocolo HTTP, @requestbody+ requestMethod.get é suportado. Portanto, depende das diferentes implementações do kit de ferramentas. Verificando o código -fonte, descobri que Okhttp e HttpurlConnection não são suportados (relatado um erro), apenas o httppclient o suporta. (O httpurlconnection padrão relatará um erro)
Sabemos que apenas o httpclient suporta @requestbody+requestMethod.get, por isso devemos atender às condições e ir para HttpClientFeignLoadBalancedConfiguration. Confira o código -fonte:
Pode -se observar que a classe ApacheHttpClient existe sob o caminho de classe. Vamos adicionar o POM:
<Depencency> <voupid> io.github.openfeign </frugiD> <ArtifactId> feign-httpclient
Finalmente, o pacote FEIGN-HTTPCLIENT-9.5.0.JAR foi carregado e aberto e descobriu que havia apachehttpclient.class. Clique e veja que era na verdade um httppclient.
Portanto, o POM apresenta Feign-httpClient-》 ApachehttpClient.class-》 Vá para httpclientfeignloadbalancedconfiguration-》 ao solicitar, httpclient-》 suporta @requestbody+ requestmethod.get.get
2. Solução:
Introduzido em Pom
<Depencency> <voupid> io.github.openfeign </frugiD> <ArtifactId> feign-httpclient
Depois que o MAVEN é atualizado, verifique se o pacote Feign-httpClient-9.5.0.jar existe no projeto.
Resumir
O exposto acima é a solução para a nuvem da primavera fingida que o editor apresentou a você. A solução para o erro do Spring Cloud Feign não suporta @requestbody+ requestMethod.get. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!