1. فرز المشكلة:
الاستثناء: org.springframework.web.httprequestmethodnotsupportedException: طريقة الطلب "منشور" غير مدعوم
من الواضح أنه عندما ينفذ Feign أخيرًا طلب HTTP ، يتم اعتبار هذه الطريقة منشورًا ، لكن عميل Feign يحدد requestmethod.get أو getMapping ، والذي يسبب خطأً.
فلماذا تعتقد أن هذه الطريقة هي المنشور؟
تتبع رمز المصدر:
1. دعونا نلقي نظرة على شرح Feignclient كدخول:
2. وفقًا للنمط الثابت لسحابة الربيع ، نفتح فئة التكوين feignautoconfiguration لرؤية منطق التكوين:
انظر إلى التعليق التوضيحي في الصندوق الأحمر للصورة أعلاه: يتم تشغيل هذا الفصل عندما لا يكون هناك iloadbalancer. لقد مكن مشروعنا الشريط ، لذلك يجب أن يكون موجودًا. انظر إلى التعليقات مرة أخرى: تحميل عملاء موازنة الشريط يحتاجون إلى استخدام FeignRibbonClientAutoconfiguration لتكوين هذه الفئة. اذهب ~
كما هو موضح في الصورة أعلاه ، انظر إلى تعليقات المربع الأحمر: بترتيب الاستيراد من أعلى إلى أسفل: httpclientFeignLoadbalancedConvanced > okhttpfeignloadbalanced>
وفقًا لتعريف بروتوكول HTTP ، يتم دعم @requestbody+ requestMethod.get. لذلك يعتمد على التطبيقات المختلفة لمجموعة الأدوات. التحقق من رمز المصدر ، وجدت أن OKHTTP و HTTPURLConnection غير مدعوم (تم الإبلاغ عن خطأ) ، فقط httppclient يدعمه. (سيقوم HttPurlConnection الافتراضي بالإبلاغ عن خطأ)
نحن نعلم أن httpclient يدعم @requestbody+requestMethod.get ، لذلك يجب أن نفي بالشروط والانتقال إلى httpclientfeignloadbalancedcondentConfiguration. تحقق من رمز المصدر:
يمكن ملاحظة أن فئة Apachehttpclient موجودة تحت classpath. دعنا نضيف في بوم:
<Rependency> <roupend> io.github.openfeign </rougiD> <StifactId> feign-httpclient </attifactid> </perimency>
أخيرًا ، تم تحميل حزمة Feign-HttpClient-9.5.0.jar ، وفتحت ووجدت أن هناك apachettpclient.class. انقر في وشاهد أنه كان في الواقع httppclient.
لذلك ، يقدم POM Feign-httpclient-》 Apachehttpclient.class-》 انتقل إلى httpclientfeignivingbalancedconvanced-》 عند الطلب ، httpclient
2. الحل:
تم تقديمه في بوم
<Rependency> <roupend> io.github.openfeign </rougiD> <StifactId> feign-httpclient </attifactid> </perimency>
بعد تحديث Maven ، تحقق مما إذا كانت حزمة Feign-HttpClient-9.5.0.jar موجودة في المشروع.
لخص
ما ورد أعلاه هو الحل لمديرة سحابة الربيع التي قدمها لك المحرر. لا يدعم حل خطأ Spring Cloud Feign @requestbody+ requestMethod.get. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!