FAQ
FAQ
"Ktor"という名前にはどのような意味がありますか?
Ktorという名前は、略語の ctor (constructor: コンストラクタ) に由来しており、最初の文字をKotlinの「K」に置き換えたものです。
質問、バグ報告、連絡、貢献、フィードバックなどはどのようにすればよいですか?
利用可能なサポートチャネルの詳細については、Supportページをご覧ください。 Ktorへの貢献方法については、How to contributeガイドに記載されています。
CIOとはどういう意味ですか?
CIOは Coroutine-based I/O (コルーチンベースのI/O)の略です。 通常、外部のJVMベースのライブラリに依存せず、Kotlinとコルーチンを使用してIETF RFCやその他のプロトコルを実装したロジックを持つエンジンのことを指します。
解決されない(赤字の)Ktorのインポートを修正するにはどうすればよいですか?
対応する
Ktorは、サーバーのシャットダウンを正常に処理できるように、IPCシグナル(SIGTERMやSIGINTなど)をキャッチする方法を提供していますか?
EngineMain を使用して実行している場合は、自動的に処理されます。 それ以外の場合は、手動で処理する必要があります。JVMの機能である Runtime.getRuntime().addShutdownHook を使用できます。
プロキシ経由でクライアントのIPを取得するにはどうすればよいですか?
プロキシが適切なヘッダーを提供し、
call.request.origin プロパティから元の呼び出し元(プロキシ)に関する 接続情報 を取得できます。 mainブランチの最新コミットをテストするにはどうすればよいですか?
jetbrains.space からKtorのナイトリービルドを取得できます。 詳細は Early Access Program をご確認ください。
使用しているKtorのバージョンを確実に確認するにはどうすればよいですか?
Server レスポンスヘッダーを送信できます。 ルートが実行されません。どのようにデバッグすればよいですか?
Ktorはルーティングの決定に関するトラブルシューティングを支援するトレースメカニズムを提供しています。 Tracing routes セクションを確認してください。
'Response has already been sent' を解決するにはどうすればよいですか?
これは、あなた自身、あるいはプラグインやインターセプターがすでに call.respond* 関数を呼び出しているにもかかわらず、再度それを呼び出そうとしていることを意味します。
'No configuration setting found for key ktor' を解決するにはどうすればよいですか?
これは、Ktorが
resources フォルダに設定ファイルが存在し、その resources フォルダがリソースフォルダとして正しくマークされていることを確認してください。 ベースとなる動作プロジェクトを作成するために、Ktorプロジェクトジェネレーター や IntelliJ IDEA Ultimate用のKtorプラグイン の使用を検討してください。詳細については、AndroidでKtorを使用できますか?
はい、Ktorのサーバーとクライアントは、少なくともNettyエンジンを使用する場合、Android 5 (API 21) 以上で動作することが確認されています。
なぜ '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 の説明に従ってインストールします。
以下のコマンドを使用して
libcurlをインストールします。shellMinGW/MSYS2をデフォルトの場所にインストールした場合は、環境変数
PATHに C:\msys64\mingw64\bin\ を追加します。
'NoTransformationFoundException' を解決するにはどうすればよいですか?
NoTransformationFoundException は、受信したボディ に対して、結果の 型からクライアントが 期待する 型への適切な変換が見つからないことを表します。
リクエストの
Acceptヘッダーが目的のコンテンツタイプを指定していること、およびサーバーのレスポンスのContent-Typeヘッダーがクライアント側の期待する型と一致していることを確認してください。使用している特定のコンテンツタイプに対して、必要なコンテンツ変換を登録してください。
クライアント側では ContentNegotiation プラグインを使用できます。 このプラグインを使用すると、異なるコンテンツタイプに対してデータをシリアライズおよびデシリアライズする方法を指定できます。
kotlin必要なプラグインがすべてインストールされていることを確認してください。不足している可能性がある機能:
- クライアントの WebSockets および サーバーの WebSockets
- クライアントの ContentNegotiation および サーバーの ContentNegotiation
- Compression
