Skip to content

FAQ

FAQ

Ktorの正しい発音を教えてください。

/keɪ-tor/ (ケイ・ター)です。

"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アーティファクト
既存のGradle/MavenプロジェクトにKtorサーバーの依存関係を追加する方法を学びます。
がビルドスクリプトに追加されていることを確認してください。

Ktorは、サーバーのシャットダウンを正常に処理できるように、IPCシグナル(SIGTERMやSIGINTなど)をキャッチする方法を提供していますか?

EngineMain を使用して実行している場合は、自動的に処理されます。 それ以外の場合は、手動で処理する必要があります。JVMの機能である Runtime.getRuntime().addShutdownHook を使用できます。

プロキシ経由でクライアントのIPを取得するにはどうすればよいですか?

プロキシが適切なヘッダーを提供し、

ForwardedHeader
必要な依存関係: io.ktor:%artifact_name%
プラグインがインストールされている場合、call.request.origin プロパティから元の呼び出し元(プロキシ)に関する 接続情報 を取得できます。

mainブランチの最新コミットをテストするにはどうすればよいですか?

jetbrains.space からKtorのナイトリービルドを取得できます。 詳細は Early Access Program をご確認ください。

使用しているKtorのバージョンを確実に確認するにはどうすればよいですか?

DefaultHeaders
必要な依存関係: io.ktor:%artifact_name%
プラグインを使用すると、以下のようにKtorのバージョンを含む Server レスポンスヘッダーを送信できます。

ルートが実行されません。どのようにデバッグすればよいですか?

Ktorはルーティングの決定に関するトラブルシューティングを支援するトレースメカニズムを提供しています。 Tracing routes セクションを確認してください。

'Response has already been sent' を解決するにはどうすればよいですか?

これは、あなた自身、あるいはプラグインやインターセプターがすでに call.respond* 関数を呼び出しているにもかかわらず、再度それを呼び出そうとしていることを意味します。

Ktorのイベントを購読するにはどうすればよいですか?

詳細は

ページをご覧ください。

'No configuration setting found for key ktor' を解決するにはどうすればよいですか?

これは、Ktorが

設定ファイル
設定ファイルでさまざまなサーバーパラメータを設定する方法を学びます。
を見つけられなかったことを意味します。 resources フォルダに設定ファイルが存在し、その resources フォルダがリソースフォルダとして正しくマークされていることを確認してください。 ベースとなる動作プロジェクトを作成するために、KtorプロジェクトジェネレーターIntelliJ IDEA Ultimate用のKtorプラグイン の使用を検討してください。詳細については、
Ktorプロジェクトの作成、開封、実行
Ktorでサーバーアプリケーションを作成、開き、実行、テストする方法を学びます。
を参照してください。

AndroidでKtorを使用できますか?

はい、Ktorのサーバーとクライアントは、少なくともNettyエンジンを使用する場合、Android 5 (API 21) 以上で動作することが確認されています。

なぜ 'CURL -I' が '404 Not Found' を返すのですか?

CURL -IHEAD リクエストを実行する CURL --head のエイリアスです。 デフォルトでは、Ktorは GET ハンドラーに対する HEAD リクエストを処理しません。 この機能を有効にするには、

AutoHeadResponse
%plugin_name% は、GETが定義されているすべてのルートに対してHEADリクエストに自動的に応答する機能を提供します。
プラグインをインストールしてください。

'HttpsRedirect' プラグイン使用時の無限リダイレクトを解決するにはどうすればよいですか?

最も可能性の高い原因は、バックエンドがリバースプロキシやロードバランサーの背後にあり、その中間機器がバックエンドに対して通常のHTTPリクエストを行っていることです。そのため、Ktorバックエンド内の HttpsRedirect プラグインがそれを通常のHTTPリクエストであると判断し、リダイレクトを返してしまいます。

通常、リバースプロキシは元のリクエストに関する情報を記述するヘッダー(HTTPSであったかどうかや元のIPアドレスなど)を送信します。それらのヘッダーを解析するための

ForwardedHeader
必要な依存関係: io.ktor:%artifact_name%
プラグインを使用することで、
HttpsRedirect
必要な依存関係: io.ktor:%artifact_name%
プラグインは元のリクエストがHTTPSであったことを認識できるようになります。

Kotlin/Nativeで対応するエンジンを使用するために、Windowsに 'curl' をインストールするにはどうすればよいですか?

Curl クライアントエンジンには curl ライブラリのインストールが必要です。 Windowsでは、MinGW/MSYS2の curl バイナリの利用を検討してください。

  1. MinGW/MSYS2 の説明に従ってインストールします。

  2. 以下のコマンドを使用して libcurl をインストールします。

    shell
  3. MinGW/MSYS2をデフォルトの場所にインストールした場合は、環境変数 PATHC:\msys64\mingw64\bin\ を追加します。

'NoTransformationFoundException' を解決するにはどうすればよいですか?

NoTransformationFoundException は、受信したボディ に対して、結果の 型からクライアントが 期待する 型への適切な変換が見つからないことを表します。

  1. リクエストの Accept ヘッダーが目的のコンテンツタイプを指定していること、およびサーバーのレスポンスの Content-Type ヘッダーがクライアント側の期待する型と一致していることを確認してください。

  2. 使用している特定のコンテンツタイプに対して、必要なコンテンツ変換を登録してください。

    クライアント側では ContentNegotiation プラグインを使用できます。 このプラグインを使用すると、異なるコンテンツタイプに対してデータをシリアライズおよびデシリアライズする方法を指定できます。

    kotlin
  3. 必要なプラグインがすべてインストールされていることを確認してください。不足している可能性がある機能:

    1. クライアントの WebSockets および サーバーの WebSockets
    2. クライアントの ContentNegotiation および サーバーの ContentNegotiation
    3. Compression