よくある質問
質問、バグ報告、連絡、貢献、フィードバックなどはどうすればよいですか?
利用可能なサポートチャネルの詳細については、サポートページをご覧ください。 貢献方法ガイドでは、Ktorに貢献できる方法について説明しています。
CIOとは何を意味しますか?
CIOは コルーチンベースI/O の略です。 通常、Kotlinとコルーチンを使用してIETF RFCまたは別のプロトコルを実装するロジックを、外部のJVMベースのライブラリに依存せずに実装するエンジンを指します。
未解決(赤色)のKtorインポートを修正するには?
対応する
KtorはIPCシグナル(例:SIGTERMやSIGINT)を捕捉し、サーバーシャットダウンを適切に処理する方法を提供しますか?
EngineMainを実行している場合、自動的に処理されます。 それ以外の場合は、手動で処理する必要があります。 Runtime.getRuntime().addShutdownHook
というJVMの機能を使用できます。
プロキシの背後にあるクライアントIPを取得するには?
プロキシが適切なヘッダーを提供し、
call.request.origin
プロパティは元の呼び出し元(プロキシ)に関する接続情報を提供します。 mainブランチの最新コミットをテストするにはどうすればよいですか?
jetbrains.space
からKtorのナイトリービルドを取得できます。 詳細は早期アクセスプログラムをご覧ください。
現在使用しているKtorのバージョンを確認するには?
Server
レスポンスヘッダーを送信できます。例: ルートが実行されません。デバッグするにはどうすればよいですか?
Ktorはルーティングの決定のトラブルシューティングに役立つトレースメカニズムを提供します。 ルーティングのトレースセクションを確認してください。
'Response has already been sent'を解決するには?
これは、あなた、またはプラグイン、あるいはインターセプターがすでにcall.respond*
関数を呼び出しており、再度呼び出していることを意味します。
'No configuration setting found for key ktor'を解決するには?
これは、Ktorが
resources
フォルダーに設定ファイルがあり、そのresources
フォルダーがそのようにマークされていることを確認してください。 ベースとなる動作するプロジェクトを持つために、Ktorプロジェクトジェネレーター または IntelliJ IDEA Ultimate用Ktorプラグインを使用してプロジェクトをセットアップすることを検討してください。詳細については、'CURL -I'が'404 Not Found'を返すのはなぜですか?
CURL -I
は、HEAD
リクエストを実行するCURL --head
のエイリアスです。 デフォルトでは、KtorはGET
ハンドラーのHEAD
リクエストを処理しません。 この機能を有効にするには、
'HttpsRedirect'プラグイン使用時の無限リダイレクトを解決するには?
最も可能性の高い原因は、バックエンドがリバースプロキシまたはロードバランサーの背後にあり、その仲介者がバックエンドに通常のHTTPリクエストを行っているため、Ktorバックエンド内のHttpsRedirect
プラグインが通常のHTTPリクエストであると認識し、リダイレクトで応答してしまうことです。
通常、リバースプロキシは元のリクエスト(HTTPSであったか、元のIPアドレスなど)を記述するいくつかのヘッダーを送信し、それらのヘッダーを解析するための
Kotlin/Nativeで対応するエンジンを使用するためにWindowsに「curl」をインストールするには?
Curlクライアントエンジンには、curl
ライブラリのインストールが必要です。 Windowsでは、MinGW/MSYS2 curl
バイナリを検討するとよいでしょう。
MinGW/MSYS2に記載されているとおりにMinGW/MSYS2をインストールします。
次のコマンドを使用して
libcurl
をインストールします。shellMinGW/MSYS2をデフォルトの場所にインストールした場合は、 C:\msys64\mingw64\bin\ を
PATH
環境変数に追加します。
'NoTransformationFoundException'を解決するには?
NoTransformationFoundExceptionは、結果タイプからクライアントが期待するタイプへの受信したボディに対する適切な変換を見つけられないことを表します。
リクエストの
Accept
ヘッダーが目的のコンテンツタイプを指定していること、およびサーバーのレスポンスのContent-Type
ヘッダーがクライアント側の期待するタイプと一致していることを確認してください。作業している特定のコンテンツタイプに必要なコンテンツ変換を登録します。
クライアント側ではContentNegotiationプラグインを使用できます。 このプラグインを使用すると、さまざまなコンテンツタイプに対してデータをシリアライズおよびデシリアライズする方法を指定できます。
kotlin必要なすべてのプラグインをインストールしていることを確認してください。不足している可能性のある機能:
- クライアントWebSocketsおよび サーバーWebSockets
- クライアントContentNegotiationおよび サーバーContentNegotiation
- Compression