#php エディター Baicao は今日、KrakenD プラグインの開発における一般的な問題、「KrakenD のプラグインを実装するときに無効なノード タイプ パニックが発生する」を紹介します。 KrakenD は、豊富な機能と柔軟なプラグイン システムを提供する高速で高性能の API ゲートウェイです。ただし、KrakenD プラグインを開発する場合、無効なノード タイプの問題が発生し、プラグインが正しく機能しなくなる可能性があります。この記事では、この問題の原因と、開発者がこのパニックを克服するのに役立つ解決策を探っていきます。
リダイレクトなしのプラグインを開発しています。私は krakend-ce 2.2.1 (golang 1.19 を使用) を使用していますが、パニックになっています:
リーリーhttps://github.com/gin-gonic/gin/issues/2959 に似ていますが、gin のバージョンは、krakend の以前のバージョンからアップグレードされています。本当に大文字だったら奇妙ですが、プラグインなしでも完全に機能します。最後の / もトリミングしました (何らかの理由である時点で追加されました)
ところで、私はプラグインのコンパイルに同じバージョンの krakend を使用しています。
リーリー私のエンドポイントは次のように定義されています:
リーリー編集: 私のブラウザでは依然として /abc ではなく /abc/ が表示されます。これにより、ルート間の衝突が発生する可能性があります (ここで見られるように: https://github.com/krakendio/krakend-ce/issues /386) とにかく、私はそうしませんスラッシュをどこに追加すればよいかわかりません (永久にトリミングしたと思っていました...そうではなかったようです)
edit2: https://www.krakend.io/docs/service-settings/router-options/ を見つけて、「disable_redirect_fixed_path」を使用しました: true と "disable_redirect_trailing_slash": true、もうパニックになりません...今度は別の問題があります: 私のボルダーが /a/ または末尾にスラッシュのあるものにリダイレクトしようとすると、無限にリダイレクトされます (冗談です)。 krakend が独自の方法でリダイレクトを処理していたため、プラグインを追加しました...
ここでの主な問題は、/{level1} と /{level1}/{level2} が /abc/ に同時に一致する場合のルーティングの競合だと思います。
###アイデア? 解決策非常に良いです。この問題を解決するために、これを使用してワイルドカード no_redirect プラグイン https://www.php.cn/link を作成しようとしました。 /ba530cdf0a884348613f2aaa3a5ba5e8構成ですが、copilot&gpt4 を使用しても失敗しましたが、これは実装できると思います。そこで私は別の方法で問題を解決しました。ゲートウェイを岩の前に置き、リクエストが失敗するたびにルートを追加しました...ログに記録されたルートがなかったためです (*泣き叫ぶ)。リダイレクトのないプラグインを必要とするファイルには問題なく機能します。素晴らしいソリューションですが、これまでのところうまくいきましたが、思ったほど長くは機能しませんでした
以上がKrakenD のプラグインを実装するときに無効なノード タイプのパニックが発生するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。