ApplicationCall

Estimated reading time: 1 minute

ルートを処理するとき、またはパイプラインを直接インターセプトするとき、ApplicationCallでコンテキストを取得します。

ApplicationCallは、2つの主要なプロパティApplicationRequestApplicationResponseへのアクセスを提供します。 名前が示しているように、これらはリクエストとレスポンスに対応します。 これらに加えて、ApplicationEnvironmentとクライアントリクエストへのレスポンスに役立ついくつかの便利な機能も提供します。 パイプラインを非同期で実行できることを前提に、ApplicationCallは、パイプラインのさまざまな部分間でデータを渡すためのAttributesを持つ論理実行コンテキストも表します。

パイプラインへのインターセプターのインストールは、ApplicationCallの処理を変更する主要な方法です。ほとんどすべてのKtorのFeatureは、アプリケーションコール処理のさまざまなフェーズでさまざまな操作を実行するインターセプターです。

    intercept(ApplicationCallPipeline.Call) { 
        if (call.request.uri == "/")
            call.respondText("Test String")
    }

上記のコードは、インターセプターをApplicationCallの処理のCallフェーズにインストールし、リクエストがルートページを要求しているときにプレーンテキストで応答します。

これは単なる例であり、通常、ページリクエストはこの方法で処理されません。これを行うrouting機能があるためです。 また、前述のように、インターセプターの定義は通常、インストール機能を備えたfeatureを使用して行われます。

ApplicationCallで使用できるほとんどの関数(上記のrespondTextなど)はsuspend関数であり、潜在的に非同期で実行できることを示しています。

ApplicationCallsの処理のメカニズムの詳細については、高度なトピックPipelineを参照してください。

関連項目